私はいつもこれがPS1
環境変数だと思いました。しかし、Ubuntuのデフォルト値を確認して.bashrc
確認PS1
すると
grep PS1 /etc/skel/.bashrc
export PS1
いいえ
エクスポートがないと環境変数ではないという意味ですか?
ベストアンサー1
このPS1
変数は、シェルに影響を与える他のいくつかの変数と一緒に(シェル変数マニュアルではbash
)はエクスポートされないため、環境変数ではありません。
PS1
他のいくつかの変数は子プロセスに渡される必要がないため、環境変数ではありません。たとえば、この変数を使用すると、現在のシェルがデフォルトのプロンプトの外観を知ることができます。とPS1
同じ変数にも同じです。また、シェルは対話型以外の起動時にこの変数を設定解除します。HISTFILE
PROMPT_COMMAND
bash
PS1
通常、子プロセスが確認する必要がある変数をエクスポートします。現在のシェルセッション内でのみ使用されている変数(シェル自体、スクリプト、または対話型コマンド)をエクスポートしないでください。
また、シェルの初期化ファイルが特定の変数をエクスポートしない場合でも、その変数はシェルの親によってまだエクスポートできます。PATH
たとえば、変数やTERM
その他の変数の場合がこれに該当しますSHELL
。これは通常、これらの変数をエクスポートする必要がないことを意味します。再び(設定を解除しない限り)
このIFS
変数は、シェルが単語分離を実行する方法と組み込みread
ユーティリティの動作を決定します。殻は普通です。初期化これは、環境の変数値を使用すると、望ましくない驚くべき結果をもたらす可能性があるためです。一般的に言えば、IFS
絶対にエクスポートしてはいけません。変数を設定またはエクスポートしないことが最善です。CDPATH
これはコマンドの動作に影響を与え、スクリプトの予想されるcd
動作が中断される可能性があります。