我正在编写一个 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