我正在写一个脚本来解决我经常遇到的问题。
其中一个问题是路径中缺少/sbin
。但事实并非总是如此,所以与其不加区别地将其添加到.profile
、.bash_profile
、.bashrc
等中,不如这样:
echo "export PATH=\"$PATH:/sbin\"" >> ~/.bashrc
……随着时间的推移,最后出现多个
export PATH
s,最后出现:/sbin:/sbin:/sbin:/sbin:/sbin
。好吧,你明白了。我该怎么处理? 最佳答案
有一种方法:
echo '[[ ":$PATH:" == *:/sbin:* ]] || PATH="$PATH:/sbin"' >> ~/.bashrc
(顺便说一下,在更新已经是环境变量的内容时,您不需要
export
。)工作原理:
有关
[[ expression ]]
的一般信息,特别是==
的信息,请参见the Bash Reference Manual, § 3.2.4.2 "Conditional Constructs"。因此
[[ ":$PATH:" == *:/sbin:* ]]
是一个命令,如果:$PATH:
包含:/sbin:
,则返回0(=成功),否则返回1(=不成功)。有关
command1 || command2
,请参见the Bash Reference Manual, § 3.2.3 "Lists of Commands"。因此
[[ ":$PATH:" == *:/sbin:* ]] || PATH="$PATH:/sbin"
是一个命令列表,如果PATH="$PATH:/sbin"
包含:$PATH:
,则运行:/sbin:
,否则不运行。关于linux - 如何将目录添加到$ PATH中,但前提是该目录尚不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52564820/