Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python无法识别别名Linux命令(commands.getoutput)_Python_Linux - Fatal编程技术网

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

python无法识别别名Linux命令(commands.getoutput),python,linux,Python,Linux,我正在Ubuntu 12.4上工作,我已经安装了matlab。通常,为了从终端调用matlab,我必须输入“~/matlab/bin/matlab”。显然这有点烦人,所以我通过添加 alias matlab='sh ~/MATLAB/bin/matlab' 到巴什尔。现在一切都是金色的,在终端(bash)中键入“matlab”可以在任何目录下工作 当我试图从python脚本调用Matlab时,问题就出现了。有这样一句话: >>> commands.getoutput('mat

我正在Ubuntu 12.4上工作,我已经安装了matlab。通常,为了从终端调用matlab,我必须输入“~/matlab/bin/matlab”。显然这有点烦人,所以我通过添加

alias matlab='sh ~/MATLAB/bin/matlab'
到巴什尔。现在一切都是金色的,在终端(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

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


谢谢

bash仅在作为交互式shell启动时计算
~/.bashrc
。如果在
/.bashrc
中有别名,希望bash在以非交互方式运行时进行计算,则可以尝试将Python脚本中的
bash_ENV
环境变量设置为指向
~/.bashrc


提供了有关交互式shell与非交互式shell以及如何使用
BASH-ENV

的更多详细信息。如果BASH是作为交互式shell启动的,则BASH仅对
~/.bashrc
进行评估。如果在
/.bashrc
中有别名,希望bash在以非交互方式运行时进行计算,则可以尝试将Python脚本中的
bash_ENV
环境变量设置为指向
~/.bashrc


提供了有关交互式shell与非交互式shell以及如何使用
BASH-ENV

的更多详细信息,将
matlab
二进制路径添加到
path
环境变量中

PATH=~/MATLAB/bin/:$PATH
export PATH
然后
python
将找到
matlab

>>> commands.getoutput('matlab')

我认为
命令
不知道shell当前的别名。但是,诸如
PATH
之类的环境变量仍然存在

matlab
二进制路径添加到
path
环境变量中

PATH=~/MATLAB/bin/:$PATH
export PATH
然后
python
将找到
matlab

>>> commands.getoutput('matlab')

我认为
命令
不知道shell当前的别名。但是,诸如
PATH
之类的环境变量仍然存在

命令
已弃用。考虑使用子过程()代替。快速问题——如果你把别名放在<代码> BasHyPrrase会发生什么?对于背景信息,请参阅添加。BasHyPrror没有帮助。我认为ubuntu在默认情况下不会出现这种情况。
commands
已被弃用。考虑使用子过程()代替。快速问题——如果你把别名放在<代码> BasHyPrrase会发生什么?对于背景信息,请参阅添加。BasHyPrror没有帮助。我认为ubuntu在默认情况下不会出现这种情况。您必须使用“导出路径=…”否则python将无法获取路径值。更改路径可能会从
~/MATLAB/bin
添加不必要的命令
ln-s~/MATLAB/bin/MATLAB-MATLAB
在已经在PATH中的目录中可能更合适,谢谢你的回答。设置路径并导出(“导出路径=…”添加到.bashrc)解决了问题。谢谢!我忘记了导出关键字:)您必须使用“导出路径=…”否则python将无法获取路径值。更改路径可能会从
~/MATLAB/bin
添加不必要的命令
ln-s~/MATLAB/bin/MATLAB-MATLAB
在已经在PATH中的目录中可能更合适,谢谢你的回答。设置路径并导出(“导出路径=…”添加到.bashrc)解决了问题。谢谢!我忘记了导出关键字:)