実行すると、代わりにPATH=abc:$PATH echo $PATH
古い値が得られます。PATH
abc:PATH
なぜこれですか?どうやって入手できますかabc:$PATH
?
PATH=/mybin:$PATH which python
編集:/mybin
Python実行可能ファイルがある場合はどうなりますか?
ベストアンサー1
走るとき
PATH=abc:$PATH echo $PATH
またはより一般的な場合
variable=value utility
その後、variable
環境で設定しますutility
(現在の環境では設定しません)。
ただし、コマンドラインを解析すると、変数の値はPATH
次のように変更されます。現在の環境。
変数が拡張された環境で変数を設定する必要があります。次のように2つのステップに分けてこれを実行できます。
PATH=abc:$PATH; echo "$PATH"
これはPATH
現在の環境で設定され、それからecho "$PATH"
以下のように実行するか、サブシェルの変数を設定します。
PATH=abc:$PATH sh -c 'echo "$PATH"'
PATH
これにより変数がに設定されますが、sh -c
現在のシェルには設定されません。
2番目の例では
PATH=/mybin:$PATH which python
ユーティリティは、which
その環境で修正した後にpython
見つかったと言うことができます。現在の環境ではここは拡張されていませんが。/mybin
PATH
PATH
which
とにかく、which python
よりよく書かれています(より移植可能)command -v python
(「参照」)。「which」を使わないのはなぜですか?それでは何を使うべきですか?")。
ENV
「変数」と呼ぶタイトルを簡単に考えてみてください。これENV
は意図したものではありませんが、sh
いくつかの実装(および他のいくつかのシェル)で使用される環境変数です。その値がファイル名の場合は、対話型シェルセッションを開始する前にファイルをインポートします。非対話型シェルに対して同じ方法で動作する変数がbash
あります。BASH_ENV