サブシェル内でbashを実行する

サブシェル内でbashを実行する

私をサブシェルに入れるコマンドがあるとしましょう(例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)を実行する正しい方法を見つけることができます。

関連情報