给定路径前的 ./ 是什么意思?

MEM*_*MEM 26 bash

我被告知要运行这个:

./yiic message ./app/messages/config.php
Run Code Online (Sandbox Code Playgroud)

但我不明白这个./意思,请任何人解释一下。

注意:相信我,我们不能用谷歌搜索。我试过了:

./ 意思是 ./ ubuntu

这和什么都没有一样。:(

fra*_*ous 31

./或者只是.当前目录的 unix 简写。

当当前目录不在您的 PATH 中时,您需要指定它。PATH 是运行程序时搜索的文件夹列表。(您可以通过编写echo $PATH.当前目录,您可以./用作速记。

类似地,../或者只是..当前目录上方目录的简写。

  • 有人应该在他们的答案中包括 *为什么* $PATH 不包含`.`。这是因为自动使用当前目录是一个安全漏洞。想象一下其他人制作了一个程序,将它命名为 `ls`,你将 `cd` 放到他的目录中,然后输入 `ls` (17认同)

Kri*_*per 15

命令行中的每个目录都有两个名为.和 的“特殊目录” ..。它们分别是当前目录和包含当前目录的目录的简写。

例如,cd ./more/directory/names仅表示“从当前目录开始并在路径中继续”。同样,该命令的cd ..意思是“向上更改一个目录。

如果您想要当前目录的名称,可以使用该pwd命令。此外,如果您使用-a标志 for ls,您可以看到这两个特殊目录。也就是说,ls -a将输出一个以.and开头的列表..


Lek*_*eyn 5

其他人已经解释了什么...意味着(分别是当前目录和父目录)。这适用于所有路径名。

当您打开终端时,您通常从您的主目录开始:(~扩展为/home/username)。以下路径都是等效的,前提是您当前的工作目录是/home/username

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(的父目录/仍然是/
  • ./././././. (当前目录在当前目录中...)
  • ./ (目录允许尾随斜杠)
  • /home////username/// (多个斜杠也是如此)

千万不能混淆./program使用. program./program运行当前目录中设置了执行位的文件。. ./program是 bash 的东西,也可以写成source ./programprogram当前目录中的文件读取 bash 命令并在当前 shell 中执行它们。

如果您想知道为什么可以只运行gedit/usr/bin/gedit不是program代替./programor /home/username/program,请参阅相关问题: