在路径中使用 ./ 对于常见的 Unix 工具有意义吗?

在路径中使用 ./ 对于常见的 Unix 工具有意义吗?

多年来,我./越来越多地在绝对路径前面使用。例如:

mv ./file /target/
rm ./something/else

# compared to
mv file /target/
rm something/else

我在网络上的更多地方看到过它,这可能就是我适应使用它的原因。我似乎无法理解为什么要这样做,并且一直想知道一段时间。也许这是一个源于直接调用本地二进制文件的坏习惯:./a.out

./上面的 shell 示例中的内容是否已过时?有什么理由./使用一些案例?使用它是否可以使路径更加明确?

答案1

明确指定某些内容位于当前目录中并不是一个坏习惯,特别是当该内容是脚本或程序时(在这种情况下的替代方法是.在您的$PATH通常是被认为存在安全风险)。

在某些情况下,./无论您是否需要,您都会在路径名的开头添加它。例如,从向下find搜索时找到的路径名将.始终以 为前缀./

在其他情况下,文件名可能会干扰实用程序的选项,例如尝试删除-f使用

rm -f

使用

rm ./-f

会解决这个问题(./-f不会被视为 的选项rm),就像

rm -- -f

do(--表示任何命令行选项的结束)。

另请注意,shell 全局变量可能*会扩展为带有破折号开头的文件。因此,循环./*比循环更安全*(除非您使用--从提供给实用程序的选项中分隔未知文件名)。

因此,在路径名中使用是一个好主意./,特别是当路径名存储在变量中并且来自脚本外部的某个源时。

相关内容