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、インタラクティブ シェルとして起動されているかどうかのみを評価します。/.bashrcbash が非対話的に実行されたときに評価するエイリアスがある場合BASH_ENVは、Python スクリプトの環境変数を に設定してみてください~/.bashrc

Bash リファレンス マニュアルでは、インタラクティブ シェルと非インタラクティブ シェル、および の使用方法について詳しく説明していますBASH-ENV

于 2012-08-01T14:28:32.103 に答える