python(commands.getoutput)无法识别别名Linux命令

时间:2012-08-01 14:20:07

标签: python linux

我正在使用Ubuntu 12.4并且我安装了matlab。通常,为了从终端调用matlab,我必须输入'〜/ MATLAB / bin / matlab'。显然这有点烦人所以我通过添加

来使这个命令别名
alias matlab='sh ~/MATLAB/bin/matlab'

到.bashrc。现在一切都很黄金,在终端(bash)中输入'matlab'可以在任何目录下运行。

当我尝试从python脚本调用Matlab时出现问题。有这样的陈述:

>>> commands.getoutput('matlab')
'sh: 1: matlab: not found'
因为看起来别名没有得到承认。 只是为了确保:

>>> commands.getoutput('~/MATLAB/bin/matlab')

就像魅力一样,

>>> commands.getoutput('echo $SHELL')
'/bin/bash'

确实验证了python是否正在尝试在bash中执行cmd ...

知道这里发生了什么吗?为什么别名被认可?如何/可以修复?

谢谢!

2 个答案:

答案 0 :(得分:5)

matlab二进制路径添加到PATH环境变量。

PATH=~/MATLAB/bin/:$PATH
export PATH

然后python会找到matlab

>>> commands.getoutput('matlab')

认为 commands不知道你的shell的当前别名。但是PATH等环境变量仍然存在。

答案 1 :(得分:4)

bash仅评估~/.bashrc是否作为交互式shell启动。如果你希望bash在/.bashrc中有非交互式运行的别名,你可以尝试从Python脚本设置BASH_ENV环境变量,指向~/.bashrc。 p>

Bash Reference Manual提供了有关交互式shell与非交互式shell以及如何使用BASH-ENV的更多详细信息。