2015-11-02 74 views
1

假设echo $PATH产生/first/path:/second/path:/third/path,但你 - 作为脚本作者 - 不知道这一点。也就是说,您的目标是将$PATH的内容与$PATH1附加在一起。现在$PATH1可能与$PATH重叠(例如:$PATH$PATH1共享/second/path)。

问题:如何达到PATH=$PATH:$PATH1的效果,但避免了上面讨论的重复问题?

回答

2

这将增加path1PATH末,但只有当它不是一个重复:

case ":${PATH:=$path1}:" in 
    *:$path1:*) ;; 
    *) PATH="$PATH:$path1" ;; 
esac 

这是POSIX,因此便于携带。

请注意,我用path1变量的小写。系统变量都是大写的。为避免意外覆盖,最好使用较低或混合大小写来表示个人变量。