如何在bash中导出变量

时间:2008-11-20 22:29:12

标签: linux bash sysadmin

我需要从bash脚本中设置一个系统环境变量,该变量可以在当前范围之外使用。所以你通常会导出这样的环境变量:

export MY_VAR=/opt/my_var

但我需要环境变量在系统级别可用。这可能吗?

5 个答案:

答案 0 :(得分:13)

不是真的 - 一旦你在子流程中运行,就不会影响你的父母。

有两种可能性:

1)获取脚本而不是运行它(参见source .):

    source {script}

2)让脚本输出导出命令,然后输出:

    eval `bash {script}`
OR:
    eval "$(bash script.sh)"

编辑: 将第二个选项更正为eval而不是source。 OPPS。

答案 1 :(得分:6)

这是我知道做你想做的唯一方法:

在foo.sh中,你有:

#!/bin/bash
echo MYVAR=abc123

当您想获得变量的值时,您必须执行以下操作:

$ eval "$(foo.sh)"  # assuming foo.sh is in your $PATH
$ echo $MYVAR #==> abc123

根据你想做什么以及你想怎么做,可以使用Douglas Leeder关于使用source的建议,但是它会提供整个文件,函数和所有内容。使用eval,只会评估回显的内容。

答案 2 :(得分:1)

在/ etc / profile中设置变量(如果需要,创建文件)。这基本上使变量可用于每个bash过程。

答案 3 :(得分:1)

在/ etc / profile中设置变量(如果需要,创建文件)。这基本上会使变量可用于每个bash进程。

...每个新的bash流程......

答案 4 :(得分:0)

当我在 root 帐户下工作时,例如希望在运行 X 的普通用户下打开 X 可执行文件。
我需要设置 DISPLAY 环境变量...

env -i DISPLAY=:0 prog_that_need_xwindows arg1 arg2