1

我正在使用 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 ......

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

谢谢!

4

2 回答 2

5

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

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

然后python会发现matlab

>>> commands.getoutput('matlab')

认为 commands不知道您的外壳当前的别名。然而,环境变量,如PATH持续存在。

于 2012-08-01T14:28:49.183 回答
4

bash 仅评估~/.bashrc它是否作为交互式 shell 启动。如果您/.bashrc希望 bash 在非交互式运行时对其进行评估,则可以尝试将BASH_ENVPython 脚本中的环境变量设置为指向~/.bashrc.

Bash 参考手册提供了有关交互式与非交互式 shell 以及如何使用BASH-ENV.

于 2012-08-01T14:28:32.103 回答