将“./”放在路径开头的目的/好处是什么?

将“./”放在路径开头的目的/好处是什么?

./在路径前面加上(点斜线)有好处吗?

在大多数情况下,cd ./home相当于cd home(并且也cd ./././././home)。是否存在这两条路径不会评估为同一路径的情况?./在文件夹或文件路径的开头有或没有有什么好处或缺点吗?

如果从程序或脚本内部,我想打开一个配置文件,我正在硬编码要打开的文件,应该是:

resource/config.txt

或者

./resource/config.txt

POSIX(或常见的 Unix 实现)在打开这两个路径之间是否给出了任何语义差异?

答案1

至少有两个原因需要这样做./something

  1. 您有一个想要运行的程序。它被命名为“test”或“cat”或“ps”等不方便的名称。通常,shell 在环境变量的目录中查找程序名称PATH。要执行您的test,您必须输入./test,否则/usr/bin/test将执行某些类似的操作。这可能会非常令人困惑。

  2. .您的环境变量中没有该PATH变量,因为您不想在浏览文件系统时意外执行程序。真正糟糕的人可能会ls在某个目录中留下脚本。该文件ls可能包含rm -rf $HOME.如果你PATH有“.”在正确的位置,可怕的人可能会诱骗您删除主目录中的所有内容。你当然可以输入“。”作为 中的最后一个条目PATH,但可以设计出“.”的情况。导致PATH问题。因此,要运行可执行文件驻留在当前工作目录中的程序,必须在其文件名前加上“./”前缀。

答案2

./确实始终是当前工作目录。然而,它(有充分的理由)通常不添加到PATH.这意味着,如果当前工作目录中有想要运行的脚本或二进制文件,则需要使用它./script.sh而不是script.sh让它运行。

答案3

vagrant@host:~$ pwd
/home/vagrant
vagrant@host:~$ mkdir foobar
vagrant@host:~$ mkdir foobar/~
vagrant@host:~$ cd foobar
vagrant@host:~/foobar$ cd ./~
vagrant@host:~/foobar/~$ pwd
/home/vagrant/foobar/~
vagrant@host:~/foobar/~$ cd ~
vagrant@host:~$ pwd
/home/vagrant
vagrant@host:~$ cd foobar
vagrant@host:~/foobar$ cd ~
vagrant@host:~$ pwd
/home/vagrant
vagrant@host:~$ 

正如 @DopeGhoti @Wildcard 和其他人所指出的,有时非常具体地说明您所在的目录以及您的目标是什么,这很方便。和./结构../提供了这一点。

相关内容