PS1は本当に環境変数ですか?

PS1は本当に環境変数ですか?

私はいつもこれがPS1環境変数だと思いました。しかし、Ubuntuのデフォルト値を確認して.bashrc確認PS1すると

grep PS1 /etc/skel/.bashrc

export PS1いいえ

エクスポートがないと環境変数ではないという意味ですか?

ベストアンサー1

このPS1変数は、シェルに影響を与える他のいくつかの変数と一緒に(シェル変数マニュアルではbash)はエクスポートされないため、環境変数ではありません。

PS1他のいくつかの変数は子プロセスに渡される必要がないため、環境変数ではありません。たとえば、この変数を使用すると、現在のシェルがデフォルトのプロンプトの外観を知ることができます。とPS1同じ変数にも同じです。また、シェルは対話型以外の起動時にこの変数を設定解除します。HISTFILEPROMPT_COMMANDbashPS1

通常、子プロセスが確認する必要がある変数をエクスポートします。現在のシェルセッション内でのみ使用されている変数(シェル自体、スクリプト、または対話型コマンド)をエクスポートしないでください。

また、シェルの初期化ファイルが特定の変数をエクスポートしない場合でも、その変数はシェルの親によってまだエクスポートできます。PATHたとえば、変数やTERMその他の変数の場合がこれに該当しますSHELL。これは通常、これらの変数をエクスポートする必要がないことを意味します。再び(設定を解除しない限り)

このIFS変数は、シェルが単語分離を実行する方法と組み込みreadユーティリティの動作を決定します。殻は普通です。初期化これは、環境の変数値を使用すると、望ましくない驚くべき結果をもたらす可能性があるためです。一般的に言えば、IFS絶対にエクスポートしてはいけません。変数を設定またはエクスポートしないことが最善です。CDPATHこれはコマンドの動作に影響を与え、スクリプトの予想されるcd動作が中断される可能性があります。

おすすめ記事