AJJ*_*AJJ 2 command-line directory
我正在看一些关于如何导航文件系统的教程,但无论我看哪个教程,都有一件事似乎没有人回答。
我知道这.是当前目录。我知道这/要么是根目录,要么只是表示当前目录的结尾。
那么如果我想在当前目录中运行一个程序我必须怎么做./ProgramName呢?这仅仅是因为ProgramName可能在$PATH,我必须指定我想在当前目录中运行该版本吗?如果 中没有等效项,为什么Ubuntu 不会自动运行当前目录的版本$PATH?
如果是这样,为什么./我在遍历目录时允许省略?例如,我可以cd DropBox从我的主目录中进行。我也可以做cd ./DropBox,它似乎可以工作,但为什么不是./必需的?
让我试着解释一下,回答这种cd情况。现在我们有了.-- current directory,然后/--root目录,现在记住/在 Linux 中是用来表示absolute path而不是相对路径的,当它开始时是路径地址。现在在你的情况下;
当您使用时,cd folder_name您正在使用该relative path(当前)目录的地址,因此无需指定路径,您已经在那里了。
当您使用cd ./folder_name它时,它说将我移动到folder_name当前 ( .) 目录中具有名称的文件夹中。
您在当前目录中运行一个程序.,并./program.sh说 -don't bother searching in the standard paths在当前.文件夹中查找。这是标准的 Linux 设置。
另外(感谢 Sergiy),我要补充的另一件事是,在使用globstar处理文件时应该使用./它,因为它更安全。假设你运行类似的东西ls *,你的文件名类似-231.txt. ls 命令会认为这-2是一个命令开关,但在 ls 上有类似的开关,所以你会得到一个错误。有了ls ./*它就可以毫无问题地工作。所以,./不仅用于cd某处或运行脚本