私はに似たzshを開始したい
zsh -c 'my_prog option1 option2'
しかし、そのコマンドを実行した後に終了する代わりに、呼び出されたzshの小道具のままになります(どこから呼び出されたかではありません)。これの特定のユースケースはscreenrcファイルにあり、次のようなことができます:
screen -t my_prog 0 zsh -c 'my_prog opt1 opt2'
そして、そのコマンドを実行した後、閉じる代わりにシェルが残っています。
私はに似たzshを開始したい
zsh -c 'my_prog option1 option2'
しかし、そのコマンドを実行した後に終了する代わりに、呼び出されたzshの小道具のままになります(どこから呼び出されたかではありません)。これの特定のユースケースはscreenrcファイルにあり、次のようなことができます:
screen -t my_prog 0 zsh -c 'my_prog opt1 opt2'
そして、そのコマンドを実行した後、閉じる代わりにシェルが残っています。
回答:
私はこれを行うことをお勧めしますが。
(sirius)~: zsh -c 'print hello; zsh -i'
hello
(sirius)~: echo $SHLVL
2
画面を操作したり、$STY
変数を使用したりできる他のトリックもあります。
個々の画面でzshから何かを実行したい場合は、.zshrcまたは.zlogin内の$ STY変数を確認できます。それはフォーマットにあります<PID>.<TTY>.<HOSTNAME>
。
if [[ -n $STY ]] then
if [[ -f ~/.zsh-$STY[(ws:.:)2] ]] then
. ~/.zsh-$STY[(ws:.:)2]
fi
fi
画面内にあり、~/.zsh-<TTY>
($ STY変数から)存在する場合は、それを入手して、陽気な方法で続行します。対話型シェルを呼び出す前に環境変数を設定することもできます。
> FOO=bar zsh -i
> env | grep FOO
FOO=bar
> RUNTHISCOMMAND=/path/to/script zsh -i
.zshrc:
if [[ -n $RUNTHISCOMMAND ]] then
$RUNTHISCOMMAND
fi
これらのチェックを.zshrc / .zloginに追加します。