1. ホーム
  2. shell

[解決済み] .bashrc、.bash_profile、.environmentの違いは何ですか?

2022-07-15 06:46:52

質問

私は長年にわたって多くの異なる *nix ベースのシステムを使用してきましたが、私が使用する Bash のすべてのフレーバーは、実行するスタートアップスクリプトを決定するための異なるアルゴリズムを持っているように思われます。 環境変数やエイリアスの設定、および起動メッセージ (たとえば MOTD) の印刷などのタスクの目的のために、どの起動スクリプトがこれらを行うのに適切な場所なのでしょうか?

に置くことの違いは何ですか? .bashrc , .bash_profile そして .environment ? のようなファイルも見たことがあります。 .login , .bash_login そして .profile などがありますが、これらは関係あるのでしょうか? 物理的にログインするとき、sshでリモートログインするとき、新しいターミナルウィンドウを開くとき、どれが実行されるかの違いは何でしょうか? プラットフォーム(Mac OS X(およびその Terminal.app)と Cygwin Bash を含む)間で大きな違いがあるのでしょうか?

どのように解決するのですか?

シェルの設定ファイルとの主な違いは、いくつかのファイルは "ログイン" シェルによってのみ読み込まれるということです (たとえば、別のホストからログインしたときや、ローカルの unix マシンのテキスト コンソールでログインしたとき)。これらのファイルは、たとえば .login または .profile または .zlogin といった具合です(使用しているシェルによって異なります)。

次に、quot;interactive" シェル (ターミナル (ウィンドウシステム上で動作するターミナルエミュレータなどの場合は疑似ターミナル) に接続されているもの) によって読み取られる設定ファイルがあります。 .bashrc , .tcshrc , .zshrc など。

bash はこれを複雑にしています。 .bashrc であるシェルによってのみ読み込まれます。 対話的 であり 非ログイン というように、ほとんどの人が .bash_profile も読むように .bashrc を次のように読みます。

[[ -r ~/.bashrc ]] && . ~/.bashrc

他のシェルは異なる動作をします。 zsh , .zshrc は、ログインしているかどうかに関わらず、 対話的なシェルでは常に読み込まれます。

bashのマニュアルページには、各ファイルが読まれる状況について説明されています。はい、動作はマシン間で概ね一貫しています。

.profile が元々使用していたログインスクリプトのファイル名です。 /bin/sh . bash との後方互換性があり、一般に /bin/sh と読み替えます。 .profile を読みます。