我正在使用bash。
如果环境变量已设置为:
,则我想要追加该环境变量 PATH=$PATH":/path/to/bin"
如果它还不存在,我想简单地设置它:
PATH="/path/to/bin"
这是否有一行声明?
显然,PATH
环境变量几乎总是设置,但用这个问题编写这个问题最简单。
答案 0 :(得分:20)
Michael Burr的回答略有改进。这适用于set -u
(set -o nounset
):
PATH=${PATH:+$PATH:}/path/to/bin
答案 1 :(得分:18)
PATH=${PATH}${PATH:+:}/path/to/bin
${PATH}
未设置/为空,则PATH
评估为空,否则评估为当前路径${PATH:+:}
评估为空,否则评估为“:”答案 2 :(得分:0)
迈克尔·伯尔(Michael Burr)和用户spbnick的回答已经非常好,并说明了原理。我只想添加两个细节:
在其版本中,新路径将添加到PATH
的末尾。这是OP要求的,但这是一种较不常见的做法。添加到末尾意味着仅当没有其他命令与早期路径匹配时才选择命令。通常,用户会添加到路径的最前面。这不是OP的要求,但是对于其他来这里的用户来说,它可能更接近他们的期望。由于语法不同,因此在这里重点介绍。
此外,在以前的版本中,未引用PATH
。尽管在大多数类似Un * x的操作系统上,PATH
中不太可能有空格,但始终引用还是更好的做法。
对于大多数典型用例,我的改进版本是
PATH="/path/to/bin${PATH:+:$PATH}"