当在bash中运行脚本时,我必须在开始时编写./:
$ ./manage.py syncdb
如果我不这样做,我得到一个错误消息:
$ manage.py syncdb
-bash: manage.py: command not found
这是什么原因呢?我想。是当前文件夹的别名,因此这两个调用应该是等效的。
我也不明白为什么在运行应用程序时不需要./,例如:
user:/home/user$ cd /usr/bin
user:/usr/bin$ git
(运行时不需要。/)
当bash解释命令行时,它在环境变量$PATH中描述的位置中查找命令。要查看它键入:
echo $PATH
你会有一些用冒号分隔的路径。正如您将看到的当前路径。通常不在$PATH中。因此,如果您的命令在当前目录中,Bash就无法找到它。你可以通过以下方式更改:
PATH=$PATH:.
这一行添加了当前目录在$PATH中,所以你可以这样做:
manage.py syncdb
不建议使用,因为它有安全问题,而且你可能会有奇怪的行为。取决于你所在的目录:)
避免:
PATH=.:$PATH
因为你可以“屏蔽”一些标准命令,并打开安全漏洞的大门:)
这只是我的个人意见。