据我了解,将路径添加到PATH
环境变量的通常方法是串联由:
字符分隔的路径。
例如,如果我想三个路径添加到它/my/path/1
,/my/path/2
并且/my/path/3
,我会做到这一点,如下所示:
PATH=$PATH:/my/path/1:/my/path/2:/my/path/3
这不容易阅读。
有没有一种方法可以使用多行语法来定义或向变量添加路径?也许使用数组?我正在寻找这样的东西:PATH
PATH =
$PATH
/my/path/1
/my/path/2
/my/path/3
如果有一些特定于shell的有趣解决方案,那么我正在zsh中寻找一种解决方案。
我不知道它是否可以在zsh中使用,但是可以在bash中使用:
PATH=$(paste -d ":" -s << EOF
$PATH
/my/path/1
/my/path/2
/my/path/3
EOF
)
编辑甚至更短:
PATH=`paste -d ":" -s << EOF
$PATH
/my/path/1
/my/path/2
/my/path/3
EOF`
并且没有产生一个过程:
new_path=(
"$PATH"
/my/path/1
/my/path/2
/my/path/3)
OLD_IFS="$IFS"
export IFS=":"
PATH="${new_path[*]}"
export IFS="$OLD_IFS"
双引号是重要的以防万一$PATH
,$IFS
,${new_path[*]}
并$OLD_IFS
保持在IFS的变量,并避免外壳的解释空间。
使用sed的带有注释和空行管理的Update2:
PATH=`sed -e '/^#/'d -e '/^$/'d << EOF | paste -d ":" -s
$PATH
/my/path/1
# This is a comment.
/my/path/2
/my/path/3
EOF`
注释字符必须是该行的第一个字符,并且空行应完全为空。要在注释和空白行之前管理空格和制表符,请sed -e '/^[ \t]*#/'d -e '/^[ \t]*$/'d
改用(要测试的制表符,因为它可能特定于sed实现)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句