我正在尝试编写一个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
}