Linux中filename和./filename有什么区别


10

filename和之间有什么区别./filename?在什么情况下,哪一种优于另一种?

Answers:


18

对于数据文件,这没有什么区别-这两个语句都将引用当前目录中的数据文件。(例如,cat filenamecat ./filename在语义上是相同的。)

如果所涉及的文件名指向可执行文件,那就是另一回事了,即文件名是您在命令行上键入的第一(甚至是唯一)东西。./filename会在当前目录中寻找可执行文件,而在其他任何地方都不会。filename另一方面,将评估环境变量PATH,并filename在其中存储的每个目录中查找(可能包括或可能不包括当前目录)。

./filename/path/to/filename因此,当您要执行特定的可执行文件而不是在PATH中找到的第一个可执行文件时,首选使用(或其他)。


6

如果您正在运行程序,则filename说运行您所找到的第一个程序,$PATH第二个说要运行当前目录中的一个程序。

如果您正在使用的文件名作为参数传递给一个程序作为do_something filenamedo_something ./filename然后他们意味着同样的事情。


5

您指的是命令执行,对不对?

有一个环境变量PATH,其中包含一些系统目录,以分号分隔。键入时command,系统将按照指定的顺序在这些目录中查找,以找到名为<command>的可执行文件。如果找到,它将尝试执行该文件。您可以通过echo $PATHbash 查看PATH 。例如:

$ echo $ PATH
/ sbin:/ bin:/ usr / sbin:/ usr / bin:/ usr / games:/ usr / local / sbin:/ usr / local / bin:/ home / ivanatora / bin:/ usr / local / kde4 / bin:/ usr / local / kde4 / bin

键入时,./filename您要指定确切路径:当前目录。您可以看到当前目录很少位于$ PATH中(出于安全原因)。因此,如果要从当前目录执行文件,请使用./filename

要通过文件路径(特别是如果不在$ PATH中)执行文件,您还可以输入<path>/file,例如:

/ sbin / ifconfig



1

这取决于您在什么情况下使用它。

作为参数,例如“程序文件名”,则取决于程序,但通常它们是相同的。

作为程序名称,例如“文件名参数”,然后“文件名参数”将搜索PATH以查找二进制文件,而“ ./文件名参数”将在当前目录中使用该程序。如果,这显然很有用。不在PATH中,但是即使使用也是有用的。之所以在路径中,可能是因为它与先前的条目匹配。

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.