如何知道何时使用 ./?

如何知道何时使用 ./?

我正在观看一些有关如何浏览文件系统的教程,但无论我观看哪个教程,似乎都有一件事无人回答。

我理解这.是当前目录。我理解这/是根目录,或者只是表示当前目录的结尾。

那么,如果我想在当前目录中运行程序,我必须执行 吗./ProgramName?这仅仅是因为ProgramName中可能存在$PATH,而我必须指定我想在当前目录中运行的版本吗?如果 中没有等效版本,为什么 Ubuntu 不会自动运行当前目录的版本$PATH

如果可以,为什么我在遍历目录时可以省略./?例如,我可以cd DropBox从我的主目录中执行。我也可以这样做cd ./DropBox,而且似乎有效,但为什么不是./必需的?

答案1

让我试着解释一下,以回答这种cd情况。现在我们有.-- current directory,然后/--root目录,现在请记住,在 Linux 中,当它启动路径地址时,它/用于指示而不是相对路径。现在在你的例子中;absolute path

  1. 当您使用时,cd folder_name您正在使用relative path该(当前)目录的地址,因此无需指定路径,您已经在那里了。

  2. 当您使用时,cd ./folder_name它会将我移动到folder_name当前(.)目录中同名的文件夹中。

  3. 您在当前目录中运行一个程序.,并./program.sh显示“don't bother searching in the standard paths查看当前.文件夹”。这是标准的 Linux 设置。

  4. 此外(感谢 Sergiy),我想补充的是,在使用globstar处理文件时,应该使用它,./因为它更安全。假设您运行类似 的命令ls *,并且您有类似 的文件名-231.txt。ls 命令会认为这-2是一个命令开关,但 ls 上有一个类似的开关,因此您会收到错误。使用ls ./*它就可以正常工作。因此,./不仅用于cd某个地方或运行脚本

答案2

当您使用 cd 时,它明确表示您想要更改目录,因此操作系统将查看当前目录的子目录。运行程序时,“./”表明它是一个程序,而不是命令。

相关内容