如何运行 bash 命令并保持提示符打开?

如何运行 bash 命令并保持提示符打开?

我正在编写一个 bash 函数,它将运行一些命令来设置环境,然后让用户处于提示符下。

我可以跑

bash -c 'ls'

ls在 bash 中执行。

我也可以做

bash -c 'ls ; exec bash'

执行ls,然后让 bash 提示符保持打开状态。

但是,我想获取一个文件并设置一些别名、函数和环境变量,然后让提示保持打开状态,如下所示:

 bash -c 'source env.sh ; exec bash'

当然,这是行不通的,因为子 shell 不会继承别名或函数。有办法解决这个问题吗?我更愿意仍然获取用户的.bashrc来源,而不是使用该--init-file选项。

答案1

设置一个 init 文件,该文件将在开始时获取用户的 init 文件,然后执行您想要的任何其他操作:

$ cat env.sh
. ~/.bashrc
export SOMEVAR="value"
somespecialfunction() {
  printf '%s\n' "I'm so cool"
}
$ bash --init-file env.sh

相关内容