如果不存在,则设置环境变量的一个班轮,否则追加

时间:2013-04-30 09:19:07

标签: bash shell unix

我正在使用bash。

如果环境变量已设置为:

,则我想要追加该环境变量

PATH=$PATH":/path/to/bin"

如果它还不存在,我想简单地设置它:

PATH="/path/to/bin"

这是否有一行声明?

显然,PATH环境变量几乎总是设置,但用这个问题编写这个问题最简单。

3 个答案:

答案 0 :(得分:20)

Michael Burr的回答略有改进。这适用于set -uset -o nounset):

PATH=${PATH:+$PATH:}/path/to/bin

答案 1 :(得分:18)

PATH=${PATH}${PATH:+:}/path/to/bin
    如果${PATH}未设置/为空,则
  • PATH评估为空,否则评估为当前路径
  • 如果未设置PATH,则
  • ${PATH:+:}评估为空,否则评估为“:”

答案 2 :(得分:0)

迈克尔·伯尔(Michael Burr)和用户spbnick的回答已经非常好,并说明了原理。我只想添加两个细节:

在其版本中,新路径将添加到PATH的末尾。这是OP要求的,但这是一种较不常见的做法。添加到末尾意味着仅当没有其他命令与早期路径匹配时才选择命令。通常,用户会添加到路径的最前面。这不是OP的要求,但是对于其他来这里的用户来说,它可能更接近他们的期望。由于语法不同,因此在这里重点介绍。

此外,在以前的版本中,未引用PATH。尽管在大多数类似Un * x的操作系统上,PATH中不太可能有空格,但始终引用还是更好的做法。

对于大多数典型用例,我的改进版本是

PATH="/path/to/bin${PATH:+:$PATH}"