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



我正在尝试编写一个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 中做到这一点的正确方法是什么?

在函数中添加export

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

相关内容

  • 没有找到相关文章

最新更新