给定路径之前./的含义是什么?


25

我被告知运行此命令:

./yiic message ./app/messages/config.php

但是我不明白./意思,任何人都可以澄清一下。

注意:请相信我,我们无法在Google上进行搜索。我试过了:

./含义./ ubuntu

没什么都一样。:(


3
在这些情况下,最好的办法是查找“点斜线”,这会得到非常有用的结果:linfo.org/dot_slash.html
heltonbiker 2011年

Answers:


29

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

当前目录不在PATH中时,需要指定它。PATH是运行程序时搜索的文件夹列表。(您可以通过编写来确定它echo $PATH。)如果可执行文件不在PATH中,则要运行该文件,您需要指定其所在的文件夹。您可以通过提供文件的完整路径来执行此操作,但是如果文件位于当前目录,可以./用作速记。

同样,../或者只是..当前目录上方的目录的简写。


17
有人应该在答案中包括为什么 $ PATH不包含.。这是因为自动使用当前目录是一个安全漏洞。想象其他人制作了一个程序,将其命名为lscd,然后将其命名为目录,然后键入ls
Zan Lynx

1
@Zan我一直想知道这一点,感谢您对没有人提出但有人应有的问题的回答。
crasic 2011年

@ZanLynx非常棒的注释/添加,由于注释可能会丢失,因此应将其编辑为答案。
NSGaga

15

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

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

如果需要当前目录的名称,则可以使用pwd命令。另外,如果将-a标志用于ls,则可以看到这两个特殊目录。也就是说,ls -a将输出以.和开头的列表..


出色的加法root45 +1 :)
Rinzwind 2011年

4

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

打开终端时,通常从主目录开始:(~扩展为/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代替./program/home/username/program请参阅相关的问题:


3

这意味着从开始current directory path

让我们假设你有一个path这样的:

/usr/ /usr/bin/ /usr/local/bin

里面/usr/bin/有一个名为的可执行文件yiic

如果您发出yiic,它将以中的一个开始/usr/bin/

通过发出命令,./yiic您告诉系统在此可执行文件的当前目录中查找。


好的...但是我还是不明白。假设我内部有yiic,/home/mysuser/并使用导航到那里cd /home/myuser。进入内部后,我认为只执行yiic即可,因为我在该目录上调用过该命令,它应该可以工作。但是他说命令不归档。如果我也这样做,并且使用了./,那么它将正常运行...您能否再说明一点?
MEM

@frabjous也回答了此评论。
MEM

不!除非您告诉它使用当前目录(通过使用./),否则它将始终在PATH指令中查找。看一下user45的答案:这.是文件夹中的特殊文件ls -la,在目录中执行a时您可以看到该文件;)
Rinzwind 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.