我想在一个shell脚本中修改路径环境变量。路径变量应该在shell脚本执行后被修改。
我知道有两种方法可以实现这个功能。第一种是在当前shell的上下文中运行脚本,可以使用以下任意一种方式:
. myscript.sh
source myscript.sh
但这样做存在污染当前shell的风险,会产生各种问题。
我更喜欢一种信息泄漏最小的解决方案。这意味着仍将其作为子shell运行,但在标准输出上输出新路径:
PATH=$(myscript.sh)
这种方法更好,因为路径是唯一受子shell影响的东西,但你必须小心子shell输出了什么。
你需要引用你的脚本而不是直接执行它。
. script.sh
或者
source script.sh
在脚本中,只需要导出或设置变量即可。
当脚本被执行时,它会在一个独立的 shell 进程中运行,并且不能轻易地更改父 shell 的变量。
关于此更多信息,请参见:shell 脚本能否设置调用 shell 的环境变量?