当你运行命令时
$ ./hello2
Run Code Online (Sandbox Code Playgroud)
shellhello2在目录中查找文件.,即在当前目录中。然后它根据一些规则运行脚本或二进制文件(在这种情况下是无趣的)。
命令
$ ././hello2
Run Code Online (Sandbox Code Playgroud)
还会导致外壳程序执行该文件。
这是因为.和./.是同一个目录。
每个目录都有一个.目录条目。此条目对应于目录本身。说着./相同的话././和././././等。
唯一的区别是系统可能需要做一些额外的目录查找(除非 shell 很聪明并且发现了明显的简化)。
每个目录还有一个..指向其父目录的条目。
这意味着如果当前目录被调用alamin,那么下面的代码也将执行该文件:
$ ../alamin/hello2
Run Code Online (Sandbox Code Playgroud)
一样
$ ../alamin/./hello2
Run Code Online (Sandbox Code Playgroud)
和
$ .././alamin/./hello2
Run Code Online (Sandbox Code Playgroud)
根目录/是一个特例。它的..目录条目与其.目录条目相同。这意味着您不能使用/...
另请参阅:文件夹的链接数不反映真实状态?