如何从bash直接执行python脚本(不使用python命令作为前缀)?
我刚刚开始使用终端来满足我的编程需求。在许多Django教程中,我看到人们说,例如,我应该在terminal中键入:如何从bash直接执行python脚本(不使用python命令作为前缀)?,bash,shell,Bash,Shell,我刚刚开始使用终端来满足我的编程需求。在许多Django教程中,我看到人们说,例如,我应该在terminal中键入: manage.py runserver 但是,当我这样做时,它会说: bash: manage.py: command not found 当我这样做时,我就让它工作了:python manage.py runserver,但是我想了解为什么这个方法可以工作,而另一个方法不行。我想这是一些非常基本的问题,但我想在这里问一下。manage.py需要是可执行的。尝试:chmod+
manage.py runserver
但是,当我这样做时,它会说:
bash: manage.py: command not found
当我这样做时,我就让它工作了:
python manage.py runserver
,但是我想了解为什么这个方法可以工作,而另一个方法不行。我想这是一些非常基本的问题,但我想在这里问一下。manage.py需要是可执行的。尝试:chmod+x manage.py
bash(1)
将搜索您的路径
环境变量以查找要执行的程序<代码>路径通常不包含您的“当前工作目录”(
),因为这会使人们面临一些小的安全问题:
cd /home/unsavory_character/
ls
如果unsavory\u character
在/home/unsavory\u character/ls
中放置一个可执行文件,将他或她的ssh(1)
密钥添加到你的/.ssh/authorized\u keys
文件中,你会大吃一惊——他或她可以在没有密码的情况下以你的身份登录
因此,现在的系统不会将当前工作目录添加到路径
,因为它太不安全了
解决办法:
./manage.py runserver
当然,这假设您当前的工作目录是包含manage.py
脚本的目录。这可能是一个安全的假设。如果您希望能够从文件系统中的任何位置执行它,可以通过编辑~/.profile
或~/.bash\u profile
或~/.bashrc
文件将目录添加到路径中。(如果其中一个已经存在,请选择该文件。我似乎还记得在OS X上出现PATH
问题的其他文件,发现其中一个文件运行良好,而另一个文件从未执行过。)
(在我的例子中,我在~/bin/
中有许多自编的实用程序,但您的可能在其他地方。请根据需要更改路径。)
这是因为您的manage.py
不是可执行脚本
首先将这一行放在manage.py
的顶部(假设您的python位于/usr/bin/python
):
然后使脚本可执行:
chmod +x manage.py
然后尝试执行脚本/manage.py runserver
阅读此链接了解更多信息:我制作了一个小“脚本”来实现自动化:(只需复制整个文本,并粘贴到活动终端中。)
tee-a~/.profile我已经试过了,但没用。谢谢你的帮助!谢谢你能解释一下(或链接到某个地方)关于什么/usr/bin/python的真正含义是让我能够很好地理解这一点。我有时会看到windows教程,其中他们会在windows设置中的某个位置更改路径,如何在Mac上执行类似操作?@Javaaaa:#
发音为。#/usr/bin/python
是Mac上python二进制文件的完整路径。在Unix脚本上,此行表示将解释脚本的二进制可执行文件的路径。还有一个链接在我的答案,请检查。
#!/usr/bin/python
chmod +x manage.py
tee -a ~/.profile <<EOF
if [ -d "/Library/Python/2.6/site-packages/django/bin" ] ; then
PATH=/Library/Python/2.6/site-packages/django/bin:$PATH
fi
EOF