如何在不编写完整路径的情况下从控制台执行python脚本?


8

我在/ usr / share / scripts /上有一些经常使用的python脚本,我希望能够通过只写名称而不是完整路径来执行它们,我该怎么做?

echo $ PATH显示给我:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

所以我尝试在终端上写:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

没有显示错误,并且echo $ PATH现在显示了我的新脚本路径,但是当我运行scriptName时,找不到命令。

我究竟做错了什么?


您之前是如何做到的?
伊格纳西奥·巴斯克斯

我以前没做过
grerdas

您没有运行它们?我以为您说过您经常使用它们...
伊格纳西奥·巴斯克斯

@Ignacio Vazquez-Abrams:哦,我不明白您的问题,对不起,我像“ /usr/share/scripts/scriptName.py args”一样运行它们
grerdas,2011年

Answers:


9

通过“ chmod + x *”设置python脚本的可执行权限
现在,您有两个选择:

  • 将您的脚本目录添加到PATH env变量,或者
  • /usr/local/bin目录中一个一个地符号链接到您的脚本(或编写另一个脚本来做同样的事情)。

例:
[mzed@node02 test]$ vim printme.py

文件内容:

#!/usr/bin/python
print "This is cool!"

--

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

我希望这能帮到您。


有可能为Windows创建版本吗?(我知道这是一个Linux问题)
Iulian Onofrei 2015年

1

好的,也许我才刚刚上学...
在/ usr / bin中添加带有#!/ bin / bash标头且没有.sh扩展名的shell脚本。然后在这些脚本中运行python absolutepath。

为什么我认为它比其他答案要好:
不需要chmod-ing脚本使其可执行。
不需要重命名脚本。


不要忘记参数。
juanitogan

0

对不起,我建议一个基本的东西。您尝试了“ scriptname.py”而不是“ scriptname”吗?

另外,所有脚本都需要具有执行权限(您可以通过发出“ chmod + x script.py”来执行此操作。)从上面的评论来看,由于您已像“ / usr / share / scripts / scriptName”一样运行它们。 py args”,它们应该具有执行权限。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.