我可以使用脚本将我的终端环境更改为 bash shell,然后在同一脚本中更改 shell 后执行其他命令吗?

我可以使用脚本将我的终端环境更改为 bash shell,然后在同一脚本中更改 shell 后执行其他命令吗?

我正在尝试编写一个脚本,将我的主终端设置为使用 bash shell。我知道 #!/bin/bash 将调用脚本中的所有命令以使用 bash shell 运行,但我想要的是一个专门将我的终端的 shell 更改为 bash 的脚本。

例如:(这是我的终端打开时的样子。)

$

当我想将终端设置为 bash 时,我手动输入 bash 命令并按回车键。

$bash

结果:

[tyg@rooto ~]$

问题是,如果我使用上述命令编写脚本,它可以工作,但脚本中 bash 命令之后的任何命令都无法执行。例如

#!/bin/bash
bash
echo "setting terminal environment to bash"
echo "success"

输出:

[tyg@rooto ~]$ 

预期输出:(类似这样)

[tyg@rooto ~]$ setting terminal environment to bash
[tyg@rooto ~]$ success

或(像这样)

[tyg@rooto ~]$
[tyg@rooto ~]$ setting environment
[tyg@rooto ~]$ success

我认为以上任何情况都是可以预料到的。为什么脚本中的两个 echo 命令无法执行?是否有解决办法?谢谢

答案1

您的其他命令不会执行,因为bash直到您执行它才会完成exit。我不确定您在这里想要实现什么,但是请查看.bashrc您是否希望命令在启动时始终运行bash。如果您始终想使用,只需在当前主 shell 的等效文件中bash写入或在文件中更改默认 shell。bash/etc/passwd

如果你希望脚本暂时切换到bash执行某些命令,但又不想与 bash shell 进行交互,你可以考虑bash使用这里的文件在你的主脚本中。

相关内容