如果我有一个基本的Python脚本,它的hashbang和什么不到位,所以从Linuxterminal上我可以运行
/path/to/file/MyScript [args]
而不通过解释器或任何文件扩展名执行,它将执行该程序。
所以我会安装这个脚本,以便我可以input简单
MyScript [args]
系统中的任何地方,它会运行? 这可以为系统上的所有用户执行,还是必须为每个用户重做? 我只是把脚本放在一个特定的目录中,还是其他的东西是必要的?
把这样的东西放在最好的地方是/usr/local/bin
。
这是放置自定义安装的二进制文件的正常位置,应该早于PATH
。
只需复制脚本(可能使用sudo
),它应该适用于任何用户。
只需创建~/bin
,并将export PATH=$PATH:$HOME/bin
放入您的bashrc /配置文件中。 不要惹这个系统,它会咬你,相信我。
更少的事情(与问题有关,但不是答案的一部分):
export PATH=$HOME/bin:$PATH
是不安全的,因为bash将会查看你的~/bin
文件夹中的可执行文件,如果它们的名字与原始$PATH
其他可执行文件相匹配,你将会意外地/非工作命令执行。 ~/bin
时,请不要忘记chmod+x
。 ~/bin
文件夹中的内容,如果你只是测试一些东西或者在未完成的脚本上工作,那么最好使用CWD
./$SCRIPT_NAME来执行这个脚本,而不是放在~/bin
制作一个python脚本:
cd /home/el/bin touch stuff.py chmod +x stuff.py
找出你的python在哪里:
which python /usr/bin/python
把这个代码放在那里:
#!/usr/bin/python print "hi"
在其中运行相同的目录:
python stuff.py
上一个目录,它不可用:
cd .. stuff.py -bash: stuff.py: command not found
未找到! 正如我们所期望的那样,将python文件的文件路径添加到$ PATH中
vi ~/.bashrc
添加文件:
export PATH=$PATH:/home/el/bin
保存它,重新应用.bashrc,然后重试
source ~/.bashrc
再试一次:
cd /home/el stuff.py
打印:
hi
诀窍是bash shell通过shebang知道文件的语言。
快速的答案是将脚本symlink
到您的系统$PATH
包含的任何目录。
漫长的回答在下面通过一个例子来说明(这是我通常所做的):
a)创建脚本,例如$HOME/Desktop/myscript.py
:
#!/usr/bin/python print("Hello Pythonista!")
b)更改脚本文件的权限以使其可执行:
$ chmod +x myscript.py
c)在$PATH
添加一个自定义目录(请参阅下面的注释中的原因),以便将其用于用户的脚本:
$ export PATH="$PATH:$HOME/bin"
d)创建脚本的符号链接如下:
$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
请注意, hello
(可以是任何东西)是用来调用脚本的命令的名称。
注意:
i)使用$HOME/bin
而不是/usr/local/bin
是将本地脚本与其他用户(如果你愿意的话)以及其他安装的东西分开。
ii)要创建一个符号链接,您应该使用完整的正确路径,即
$HOME/bin
GOOD〜 ~/bin
不好!
这是一个完整的例子:
$ pwd ~/Desktop $ cat > myscript.py << EOF > #!/usr/bin/python > print("Hello Pythonista!") > EOF $ export PATH="$PATH:$HOME/bin" $ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello $ chmod +x myscript.py $ hello Hello Pythonista!
在shell中输入echo $PATH
。 这些是你键入command
时搜索的目录,所以把它放在其中的一个。
编辑:显然不要使用/usr/bin
,使用/usr/local/bin
将脚本放在PATH的某处(如/usr/local/bin
)是一个很好的解决方案,但是这会迫使系统的所有用户使用/查看脚本。
在/etc/profile
添加一个别名可以让你的系统用户使用unalias
命令来取消这个unalias
。 要添加的行将是:
alias MyScript=/path/to/file/MyScript
只需在/ usr / local / bin /中创建脚本的符号链接:
sudo ln -s /path/to/your/script.py /usr/local/bin/script
根据FHS , /usr/local/bin/
是定制脚本的好地方。 我更喜欢把它们复制到755
root:root
。