这些年来,我./
越来越多地使用绝对路径。例如:
mv ./file /target/
rm ./something/else
# compared to
mv file /target/
rm something/else
我在网络上的更多地方看到了它,这可能就是我适应使用它的原因。我似乎无法理解为什么会这样做,并且一直想知道。也许这是一个源于直接调用本地二进制文件的坏习惯:./a.out
./
上面的 shell 示例中已经过时了吗?./
在某些情况下有什么理由使用吗?使用它可能会使路径更明确吗?
明确指定某些内容位于当前目录中并不是一个坏习惯,尤其是当该内容是脚本或程序时(在这种情况下,另一种选择是
.
在您的目录$PATH
中,这通常被认为是安全风险)。在某些情况下,
./
无论您是否需要,您都会在路径名的开头使用它。例如,find
当从.
向下搜索时找到的路径名总是以 . 为前缀./
。在其他情况下,文件名可能会干扰实用程序的选项,例如尝试删除调用的文件
-f
时使用
会解决这个问题(
./-f
不会被视为 的选项rm
),就像做(
--
任何命令行选项结束的信号)。另请注意,shell glob,例如
*
可能会扩展为带有初始破折号的文件。因此,循环./*
比循环更安全*
(除非您使用--
从提供给实用程序的选项中分隔未知文件名)。因此,
./
在路径名中使用是一个好主意,特别是当路径名存储在变量中并且来自脚本外部的某个源时。