我想运行一个bash子shell,(1)运行一些命令,(2),然后保留在该subshell中以按照我的意愿进行。我可以单独执行以下每个操作:
使用
-c
标志运行命令:$> bash -c "ls; pwd; <other commands...>"
但是,执行命令后,它将立即返回“ super”外壳。我还可以运行一个交互式子shell:
开始新的
bash
过程:$> bash
直到我明确地说出来,它才会退出子外壳……但是我无法运行任何初始命令。我找到的最接近的解决方案是:
$> bash -c "ls; pwd; <other commands>; exec bash"
它可以工作,但不是我想要的方式,因为它在一个子shell中运行给定命令,然后打开一个单独的命令进行交互。
我想单行执行此操作。退出子外壳后,我应该回到常规的“超级”外壳,而不会发生任何事件。一定有办法~~
NB:我没有问...
- 不问在哪里可以掌握bash手册页
- 不问如何从文件中读取初始化命令...我知道该怎么做,这不是我要寻找的解决方案
- 对使用tmux或gnu屏幕不感兴趣
- 不愿意为此提供背景信息。即,该问题是笼统的,并非出于任何特定目的
- 如果可能的话,我想避免使用变通办法来实现我想要的目的,但是要以一种“肮脏”的方式。我只想单行执行此操作。特别是我不想做这样的事情
xterm -e 'ls'
exec bash
解决方案涉及两个单独的子外壳。我想要一个连续的子壳。
exec
在于,它取代了与第二,第一子shell,所以你只剩父低于1个壳。如果您的初始化命令设置了环境变量,则它们将存在于执行的shell中。
exec
是,你失去了,这不是通过环境传承给子shell任何东西,如非出口变量,函数,别名,...
exec bash
解决方案不适合您?