1行の環境変数設定動作

1行の環境変数設定動作

私がこうすれば:

SUMAN_DEBUG=foo echo $SUMAN_DEBUG

何の出力も得られません。

しかし、これを行うと:

SUMAN_DEBUG=foo && echo $SUMAN_DEBUG

それから私は得ます

「金持ち」

なぜそんなことですか?

ベストアンサー1

[この回答は正しくありません。問題は、コマンドラインで変数を割り当てる前に発生する変数の拡張が原因で発生します。以下のコメントをご覧ください。さらに、この質問は重複として宣言され、元の質問でよく議論されました。 -gt]

SUMAN_DEBUG=foo前のコマンドにのみ存在するローカル変数に対するローカル環境変数の割り当て。 2番目のケースでは、&&コマンドリストが実行されたため、コマンドはありません。あなたの場合、最初のコマンドは空であり(したがって環境変数はコマンドに影響を与えません)、2番目のコマンドは実行されますが、環境変数には設定されません。

export変数がグローバル環境変数になるように割り当てに追加できます。ただし、コマンドのリストが完了した後も持続します。

別のオプションは、コマンドの完全なリストを括弧内に入れてサブシェルで実行することです。

(export SUMAN_DEBUG=foo && echo $SUMAN_DEBUG)

この場合、永続環境変数はサブシェルに設定され、サブシェルが操作を完了すると環境は消えます。

よりBourneagain シェルマニュアル、部品リストおよび情報環境もっと学ぶ。

おすすめ記事