Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从bash直接执行python脚本(不使用python命令作为前缀)?_Bash_Shell - Fatal编程技术网

如何从bash直接执行python脚本(不使用python命令作为前缀)?

如何从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+

我刚刚开始使用终端来满足我的编程需求。在许多Django教程中,我看到人们说,例如,我应该在terminal中键入:

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