我需要做一些类似的东西
$ source /etc/environments # called in bash.sh script
当然,脚本完成后,不会对 shell 进行任何更改。我知道这很棘手,如果因为子进程无法修改父"bash"进程。但可能是另一种方法?
你应该
使用
source bash.sh
然后它在原始 shell 而不是子进程中运行。
正如您自己所观察到的那样,子进程无法设置持久环境变量。通常的解决方法之一是编写这样的东西来 stdout:
% cat my_script
#!/bin/bash
echo "export MY_VAR=1234"
然后在命令替换中使用:
eval "$(./my_script)"
这种脚本的一个示例是dircolors