为什么将./附加到文件执行程序而只是键入程序却没有

时间:2014-01-03 08:29:03

标签: bash shell

更具体地说,我的意思是:

假设我有一个名为test.py的python脚本,第一行有一个正确的shebang,比如说

#!/usr/bin/env python

print 'this works'

在shell中,当我输入:

$ test.py

什么都没发生,但是当我输入时:

$ ./test.py

调用该命令并打印“this works”。

为什么?我想 ”。”只是意味着当前目录。为什么有一个./突然意味着我们想要执行接下来的任何事情?感谢。

2 个答案:

答案 0 :(得分:4)

shell只查找路径中的可执行文件(在shell中尝试echo $PATH以查看其值)。如果.不在路径中,则必须提供可执行文件的显式路径。在路径中没有.是一个好主意:想象有人设法在您的主目录中放置一个名为ls的可执行文件!

答案 1 :(得分:1)

因为当前目录(您保存test.py的位置)不在您的$PATH环境变量中。

当您尝试运行可执行文件时,会搜索

$PATH