Unix变量最佳实践:包含路径的变量应该以斜线结尾

时间:2010-04-22 20:19:09

标签: unix path

在unix系统上将目录存储在文件名中时,最佳做法是什么?目录路径是否应以斜线结尾?

方法A

TMP="/tmp/pasteTmp/"

允许你这样做:

cd "$TMP$fileName"

方法B

TMP="/tmp/pasteTmp"

允许你这样做(用额外的斜线看起来不那么干净):

cd "$TMP/$fileName"

但也允许你这样做:

cd "$TMP/actualFileName"

我认为使用第一种方法是不可能的。

3 个答案:

答案 0 :(得分:11)

没关系。相反,你应该总是假设在使用路径时添加自己的斜杠不存在。 / foo //相当于/ foo /所以它可以解决。

答案 1 :(得分:3)

在正常使用中引用目录时,不包括斜杠:我的主目录是/home/andy,而不是/home/andy/。如果你编写的脚本假设有斜杠,那么迟早你会忘记包含它并让自己大吃一惊。

我不确定我是否同意你的额外斜线“似乎不太干净”。当您不使用变量时,您希望使用斜杠来分隔目录和文件名;当目录名存储在shell变量中时,我仍然发现用分隔部分的斜杠进行读写是很自然的。

答案 2 :(得分:3)

当您使用100个脚本和大量库和可执行文件处理大型怪物应用程序时,您开始更多地担心导致较少痛苦而不是“看起来不那么干净”的原因。我同意双斜线看起来很有趣,但现实是Unix并不关心。我宁愿假设尾随斜杠不在那里,并且知道当我自己添加一个斜线时它仍然可以工作,而不是希望每个人都记得包含一个,然后当其他人忘记添加尾部斜杠时我的代码会中断。

让自己处于一种可以控制代码是否有效的情况。取决于其他人遵循惯例导致头痛和凌晨3点支持呼叫,当他们不可避免地没有。