在函数中通过引用设置环境变量

时间:2014-02-20 10:11:09

标签: bash

我正在尝试编写一个bash函数来初始化一些环境变量。 除非它已存在,否则我想为它们添加一条路径。

我称之为

$ add_to_path /home/brucewayne MYENV

这是我到目前为止所做的。

# adds $1 to path $2 (e.g. add '/opt/blabla' to $PYTHONPATH)
add_to_path() {
    if [ -d "$1" ] && [[ ":${!2}:" != *":$1:"* ]]; then
        $2="$1:${!2}"
    fi
}

但是当我运行它时,我得到了

./a.sh: line 6: MYENV=/home/brucewayne:/home/pal: No such file or directory

我的猜测是$2="$1:${!2}"不被解释为作业。 $ 2应该成为MYENV并且值应该设置为MYENV,但是,看起来我不能通过引用设置值。 在bash中这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

在您的函数中添加export

add_to_path() {
    if [ -d "$1" ] && [[ ":${!2}:" != *":$1:"* ]]; then
       export $2="$1:${!2}"
    fi
}