2016-10-14 3 views
0

のための同様の構文を使用して、bashのファイルからのPython 3を取得:私は、インストールスクリプトを書いていますし、あなたが行うことができますbashのでは代わりにPythonの2のPythonの3変数のリンクを取得しようとしているのPython 3

:~$ export PYTHON="${PYTHON:-python}" 
:~$ echo $PYTHON 
/usr/bin/python2 

あなたはPython 3の代わりにどのように類似した構文を使用しますか?私は試しました

​​3210

しかし、動作しません。

+0

python3をインストールしましたか?フルパスを与えてください – haifzhan

+0

特定のオペレーティングシステムのpython3パッケージに依存します。いくつかの場所では 'python3'ですが、他には' python34'や 'python35'のようなものが必要です。特定のディストリビューションやオペレーティングシステムを知らなくても、間違いなく正確な回答は得られません。 –

+0

また、 'export PYTHON =" $ {PYTHON:-python} "'は実際にあなたのシナリオにあります**ちょうど 'export PYTHON'とまったく同じ** **これは環境内ですでに設定されている値を再利用していますすべて。 –

答えて

2

あなたの元、Pythonの2のコードは、あなたがそれをやっていると思う何をしていません。

:~$ export PYTHON="${PYTHON:-python}" 
:~$ echo $PYTHON 
/usr/bin/python2 

${foo:-bar}fooという名前の変数を展開し、またはこれはある - その変数が未設定またはに設定のどちらかである場合空の値 - デフォルトで値barの代わりに展開されます。結果がbarでない場合は、$fooが既にbarの値に設定されていなければなりません。

このコマンドの論理はおおよそことである:

  • PYTHONという名前のシェル変数が存在しない、またはそのような変数が存在するが空の値と、次に環境変数をエクスポートする場合 - と、シェルを設定します変数 - とし、値はpythonです。 (/usr/bin/python2ではなく、正確にはpython、その6つの正確な文字)。
  • PYTHONという名前のシェル変数が空でない値を持つ場合は、現在の値で環境にエクスポートします。 (その変数がすでにエクスポートされている場合、この行は無効です)。 echo $PYTHON以来

が出力/usr/bin/python2として放出され、これはあなたの元のコマンドがまったく呼び出された前PYTHON=/usr/bin/python2真されていなければならないことを意味します。


あなたの元のコマンドとは異なり、あなたは(それが既にexport編をされている場合、または環境変数)PYTHONシェル変数の元の値を無視したい、場合

は、あなたは、次のような何かを行う必要があります。

exportの終了ステータスが検出されるのエラーを妨げるtypeの終了ステータスを、上書きしないように
PYTHON=$(type -P python3) || { 
    echo "python3 not found" >&2 
    exit 1 
} 
export PYTHON 

export、ここで別のコマンドとして実行されます。

関連する問題