![在子 shell 内执行 bash](https://linux22.com/image/189292/%E5%9C%A8%E5%AD%90%20shell%20%E5%86%85%E6%89%A7%E8%A1%8C%20bash.png)
假设我有一个命令将我置于子 shell 中(例如nix-shell
)。如果我有一个 bash 脚本
enter-subshell
echo hi
它将echo hi
等待执行,直到我退出子 shell。有没有办法编写一个脚本,其行为与按顺序手动键入两行相同?换句话说,后续命令是在新调用的 shell 中执行的吗?
编辑:看来我想要做的事情没有通用的解决方案。
答案1
您必须创建一个脚本并调用该 shell,将您的脚本作为参数调用。例如:
$ echo "echo hi" > my_echo.subshell
$ echo "enter-subshell -c my_echo.subshell" > my_script.bash
$ ./my_script.bash
将参数传递给子 shell 的方式(在我的示例中为“ -c
”)取决于您的子 shell,每个 shell 可能使用不同的参数。
作为替代方案,如果您不想创建第二个脚本,也可以将指令重定向到 shell。它也会有所不同,具体取决于您要调用的 shell。例如:
enter-subshell -e <<EOF
echo hi
EOF
对于这种方法,您可以阅读更多关于“这里的文件”。同样,您将找到执行特定子 shell 的正确方法(在我的示例中为“ -e
”)。