我正在尝试编写一个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中这样做的正确方法是什么?
答案 0 :(得分:2)
在您的函数中添加export
:
add_to_path() {
if [ -d "$1" ] && [[ ":${!2}:" != *":$1:"* ]]; then
export $2="$1:${!2}"
fi
}