问题描述
我被告知要运行这个:
./yiic message ./app/messages/config.php
但我不明白 ./
的意思,谁能解释一下。
注意:相信我,我们不能用谷歌搜索。我试过了:
./意思是 ./ubuntu
这和什么都没有一样。 🙁
最佳方案
./
或 .
是当前目录的 unix 简写。
当当前目录不在您的 PATH 中时,您需要指定它。 PATH 是运行程序时搜索的文件夹列表。 (您可以通过编写 echo $PATH
来确定它。)如果可执行文件不在您的 PATH 中,要运行它,您需要指定它所在的文件夹。您可以通过提供文件的完整路径来完成此操作,但如果文件是在当前目录中,您可以使用 ./
作为速记。
类似地,../
或 ..
是当前目录上方目录的简写。
次佳方案
命令行中的每个目录都有两个 “special directories” 称为 .
和 ..
。它们分别是当前目录和包含当前目录的目录的简写。
因此,例如,cd ./more/directory/names
仅表示“从当前目录开始并在路径中继续”。类似地,命令 cd ..
的意思是“向上更改一个目录。
如果需要当前目录的名称,可以使用 pwd
命令。此外,如果您对 ls
使用 -a
标志,您可以看到这两个特殊目录。也就是说, ls -a
将输出一个以 .
和 ..
开头的列表。
第三种方案
其他人已经解释了 .
和 ..
的含义(分别是当前目录和父目录)。这适用于所有路径名。
打开终端时,通常从主目录开始: ~
(扩展为 /home/username
)。以下路径都是等效的,前提是您当前的工作目录是 /home/username
:
-
/home/username
-
.
-
../username
-
../../home/username
-
../../../home/username
(/
的父目录还是/
) -
./././././.
(当前目录在当前目录…) -
./
(目录允许尾随斜杠) -
/home////username///
(多个斜线也是如此)
不要将 ./program
与 . program
混淆。 ./program
运行当前目录中设置了执行位的文件。 . ./program
是一个 bash 东西,也可以写成 source ./program
,它从当前目录中的 program
文件中读取 bash 命令并在当前 shell 中执行它们。
如果您想知道为什么您可以只运行 gedit
而不是 /usr/bin/gedit
而不是 program
而不是 ./program
或 /home/username/program
,请参阅相关问题:
第四种方案
意思是从 current directory path
开始。
假设你有一个 path
像这样:
/usr/ /usr/bin/ /usr/local/bin
在 /usr/bin/
内部有一个名为 yiic
的可执行文件。
如果您发出 yiic
它将启动 /usr/bin/
中的那个。
通过发出 ./yiic
,您告诉系统在当前目录中查找此可执行文件。