私をサブシェルに入れるコマンドがあるとしましょう(例nix-shell
:)。 bashスクリプトがある場合
enter-subshell
echo hi
echo hi
サブシェルが終了するまで実行を待ちます。手動で2行を順番に入力するのと同じように動作するスクリプトを作成する方法はありますか?つまり、新しく呼び出されたシェルで後続のコマンドが実行されますか?
編集:私がやろうとしていることに対する普遍的な解決策はないようです。
答え1
スクリプトを生成し、そのシェルを呼び出してスクリプトを引数として呼び出す必要があります。たとえば、
$ echo "echo hi" > my_echo.subshell
$ echo "enter-subshell -c my_echo.subshell" > my_script.bash
$ ./my_script.bash
サブシェルに引数を渡す方法(たとえば、 " -c
")はサブシェルによって異なり、各シェルは異なる引数を使用できます。
代わりに、2番目のスクリプトを生成したくない場合は、指示をシェルにリダイレクトすることもできます。また、呼び出すシェルによって異なります。たとえば、
enter-subshell -e <<EOF
echo hi
EOF
このアプローチについては、「ここにファイル同様に、特定のサブシェル(例では "" -e
)を実行する正しい方法を見つけることができます。