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

标签 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...

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

谢谢!

最佳答案

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

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

然后python会找到matlab:

>>> commands.getoutput('matlab')

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

关于python - python (commands.getoutput) 无法识别带别名的 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761300/

相关文章:

Python 属性文件

python - 如何打印 Python 列表中的每第 4 个项目?

python - 我怎样才能用python中列表的顺序对字典进行排序

c - 在设备驱动程序中使用 stdlib.h

c++ - 在 C++ 中处理 UTF-8

android - Android 上的通用系统挂载

C++ Linux basic_string::_M_construct null not valid 运行时错误

python - 为什么 sys.getdefaultencoding() 与 sys.stdout.encoding 不同?这如何破坏 Unicode 字符串?

python - 查找列表中项目的平均长度。 Python

Linux版Windows "nonpaged pool"这种东西存在吗?