我正在使用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 ...
知道这里发生了什么吗?为什么别名被认可?如何/可以修复?
谢谢!
答案 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
的更多详细信息。