如果不在命令行中指定python2.7,我如何专门运行python2.7?

如果不在命令行中指定python2.7,我如何专门运行python2.7?,python,linux,shell,alias,Python,Linux,Shell,Alias,为了提供一些背景信息,我正在尝试“安装”一个python脚本,这样用户只需运行我的install.py脚本,然后他们就可以运行主脚本(比如“awm”),而不用自己做任何工作。这看起来像: awm同步 比如说。具体地说,我不必输入python文件“awm”的完整路径,作为一个用户,我也不必乱用/etc/path、/etc/profile、.bashrc或其他任何东西,install.py为我做了这些 我的第一个尝试是在/etc/path中添加“awm”,这只在Mac上有效。因此,我进行了分支,并将

为了提供一些背景信息,我正在尝试“安装”一个python脚本,这样用户只需运行我的install.py脚本,然后他们就可以运行主脚本(比如“awm”),而不用自己做任何工作。这看起来像:

awm同步

比如说。具体地说,我不必输入python文件“awm”的完整路径,作为一个用户,我也不必乱用/etc/path、/etc/profile、.bashrc或其他任何东西,install.py为我做了这些

我的第一个尝试是在/etc/path中添加“awm”,这只在Mac上有效。因此,我进行了分支,并将其添加到/etc/profile中,使其能够在RHEL(另一个目标操作系统)上工作。不幸的是,我公司的RHEL机器使用Python2.6,“awm”需要Python2.7。救援队的化名

这就引出了一个实际问题——我的许多队友使用不同的shell,例如我使用fish,一些使用zsh,其他使用bash,等等。有没有一种方法可以让我在不知道用户shell的情况下添加别名?还是我是索尔


除了在这里使用别名,我还可以使用其他解决方案,但这似乎是最有希望的解决方案,因为别名可以手动指定要使用的python版本

对python 2.7使用shebang,如下所示:

#!/usr/bin/env python2.7
假设您已经在路径中安装了它,您甚至不需要在文件名的末尾添加.py。然后您可以使用以下命令调用:

awm sync

为什么不安装在默认路径中的某个位置,例如
/usr/local/bin
?另外,请注意,setuptools可以自动生成一个垫片脚本,以调用所需的任何解释器版本。此外,请注意,别名在许多常见情况下根本不起作用。无法从非交互脚本启动shell别名。不能使用
find-exec
启动shell别名,也不能在没有shell的任何其他情况下启动shell别名(即
subprocess.Popen()
没有
shell=True
)。一般来说,最好避免它们;我在freenode#bash频道工作的这些年里,有多少人因为别名问题来到这个频道,而没有得到“不要使用别名”作为他们的答案,我可以用一只手数一数。请看,并注意关于入口点的部分。这正是我想要的,谢谢。我已经在使用shebang了,但是用了“python”而不是“python2.7”!