在子 shell 内执行 bash

在子 shell 内执行 bash

假设我有一个命令将我置于子 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”)。

相关内容