あなたの元、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
、ここで別のコマンドとして実行されます。
python3をインストールしましたか?フルパスを与えてください – haifzhan
特定のオペレーティングシステムのpython3パッケージに依存します。いくつかの場所では 'python3'ですが、他には' python34'や 'python35'のようなものが必要です。特定のディストリビューションやオペレーティングシステムを知らなくても、間違いなく正確な回答は得られません。 –
また、 'export PYTHON =" $ {PYTHON:-python} "'は実際にあなたのシナリオにあります**ちょうど 'export PYTHON'とまったく同じ** **これは環境内ですでに設定されている値を再利用していますすべて。 –