私は、ログインとインタラクティブシェル、環境変数、シェル機能などをさまざまな設定ファイルとbashrcファイルに設定する必要があるかどうか、または設定してはいけない理由を読むのに多くの時間を費やしました。存在するこの投稿誰かがbash関連の項目(プロンプトオプションなど)を〜/ .bashrcに設定する必要があると述べました。これにより、PS1変数に疑問が生じました。私が見たすべての例には同様のものがありますexport PS1=""
。 bashにのみ意味があるので、実際に環境にエクスポートする必要がありますか? ~/.bashrcにこれを持っているだけであなたがPS1=""
望む効果を得ることができますが、何か欠けているものがあるかどうか疑問に思います。
答え1
そうですね。PS1
bashの対話型インスタンスでのみ意味があるため、設定して~/.bashrc
エクスポートしないでください。PS1
これは他のシェルでも意味がありますが、迅速な拡張がシェルごとに異なるため、異なる意味があります。実際、セマンティクスはシェルオプション(少なくとも)によって異なるため、bashインスタンス間でPS1
異なる意味を持つことができますpromptvars
。
PS1
環境にエクスポートするのは、.profile
1つのシェル(Bourneシェル)のみを使用し、構成ファイルがなかった1970年代の回帰です。常に同じシェルを使用して別の方法で構成しない場合、今日もまだ機能します。しかし、純粋にスクリプト用に設計されていないすべての最新のシェル(csh、ksh、bash、zshなど)は、インタラクティブに実行されたときに構成ファイル(.cshrc
、、、、... )を読み取るため、1970年代.kshrc
のアプローチは不要になります。環境にエクスポートせずにシェル固有のファイルに他のシェル固有の設定を指定すると、他のシェル構成、他のシェル、または一般的なプロンプトを表示できない他の端末を使用するときに問題が発生するのを防ぐことができます。ファンタジー。シェル固有のファイル設定は常に機能しますが、設定とエクスポートは「単純な」場合にのみ機能するため、正しい方法で実行しない理由はありませんが、Webには悪いチュートリアルがたくさんあり、さらに悪いチュートリアルもあります。ディストリビューションのデフォルト割り当てから。.bashrc
.zshrc
PS1
PS1
.profile
これが人生です。