我需要从当前范围之外可用的 Bash 脚本设置系统环境变量。所以你通常会像这样导出环境变量:
export MY_VAR=/opt/my_var
但是我需要环境变量在系统级别可用。这可能吗?
这是我知道做你想做的唯一方法:
在 foo.sh 中,你有:
#!/bin/bash
echo MYVAR=abc123
而当你想获取变量的值时,你必须执行以下操作:
$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH
$ echo $MYVAR #==> abc123
根据您想做什么以及如何做,可以使用Douglas Leeder关于使用source的建议,但它将获取整个文件、函数和所有内容。使用 eval,只会评估得到回显的内容。
在文件/etc/profile中设置变量(如果需要,创建文件)。这实际上将使该变量可用于每个 Bash 进程。
当我在该root
帐户下工作并希望例如在运行 X 的普通用户下打开 X 可执行文件时。
我需要设置DISPLAY
环境变量...
env -i DISPLAY=:0 prog_that_need_xwindows arg1 arg2