我需要从bash脚本中设置一个系统环境变量,该变量可以在当前范围之外使用.所以你通常会导出这样的环境变量:
export MY_VAR=/opt/my_var
但我需要环境变量在系统级别可用.这可能吗?
不是真的 - 一旦你在子流程中运行,你就不会影响你的父母.
有两种可能性:
1)获取脚本而不是运行它(参见source.):
source {script}
2)让脚本输出导出命令,并评估:
eval `bash {script}` OR: eval "$(bash script.sh)"
编辑:修正了第二个选项是eval而不是source.哎呀.
这是我知道做你想做的事的唯一方法:
在foo.sh中,您有:
#!/bin/bash echo MYVAR=abc123
当您想获得变量的值时,您必须执行以下操作:
$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH $ echo $MYVAR #==> abc123
根据你想要做什么,以及你想怎么做,Douglas Leeder关于使用source的建议可以使用,但它将提供整个文件,函数和所有.使用eval,只会评估回显的内容.