我发现有时我使用来command
运行一个命令,但有时我使用来./command
运行另一个命令。
有什么不同?
答案1
运行xx
在环境变量中列出的目录中搜索PATH
名为 的文件xx
。它找到的第一个可执行文件(无论是二进制文件还是脚本)都会执行。它会执行不是在当前目录中查找,除非.
在中列出PATH
,即不是受到推崇的。
如果当前目录中有同名的可执行文件,则运行./xx
该文件。xx
通过指定文件来运行文件地点,则必须包含符号。如果命令中/
没有(实际上,/
第一个字命令的 ,即要执行的文件的名称),它会搜索PATH
该文件。如果有/
,则命令的第一个字将被视为按位置引用特定文件。
因此,由于它包含,./xx
所以与不同。xx
/
当然/xx
不是xx
正常工作——它将尝试运行位于根目录中的文件/
。因为.
代表当前目录,所以在那里./xx
运行xx
。
答案2
用更简单的话回答:
在 Shell 提示符下我们可以执行命令...命令只不过是保存在特定目录中的可执行文件的名称,例如:bin、sbin...我们可以调用可执行文件而不指定扩展名。
user@comp~# command
当我们输入命令时,文件将被执行并保存在特定的目录中。
user@comp~# ./command
在这种情况下,./command
我们调用保存在当前提示路径(当前工作目录)中的可执行文件。您可以使用命令了解 shell 的当前工作目录pwd
。