私はこれまで何年もの間、さまざまな *nix ベースのシステムを使用してきましたが、使用している Bash の種類ごとに、実行する起動スクリプトを決定するためのアルゴリズムが異なるようです。環境変数やエイリアスの設定、起動メッセージ (MOTD など) の印刷などのタスクを実行するには、どの起動スクリプトが適切なのでしょうか。
.bashrc
、、.bash_profile
および に何かを入れることの違いは何ですか? 、、および.environment
などの他のファイルも見たことがあります.login
が、これらは関係しますか? 物理的にログインする場合、ssh 経由でリモートでログインする場合、および新しいターミナル ウィンドウを開く場合に実行されるものの違いは何ですか? プラットフォーム間で大きな違いはありますか (Mac OS X (およびその Terminal.app) と Cygwin Bash を含む)?.bash_login
.profile
ベストアンサー1
シェル設定ファイルとの主な違いは、一部のファイルは「ログイン」シェルによってのみ読み取られることです (たとえば、別のホストからログインする場合や、ローカル UNIX マシンのテキスト コンソールでログインする場合)。これらは、使用しているシェルに応じて、.login
または、.profile
またはと呼ばれます。.zlogin
次に、「対話型」シェル (つまり、端末 (または、ウィンドウ システムで実行されている端末エミュレーターの場合は疑似端末) に接続されたシェル) によって読み取られる構成ファイルがあります。これらは、、、などの名前の.bashrc
ファイルです.tcshrc
。.zshrc
bash
これを複雑にしているの.bashrc
は両方のシェルによってのみ読み取られます相互の作用そして非ログインなので、ほとんどの人は、次のような言い方で、子供たちに.bash_profile
も読んでほしいと伝えてしまうでしょう。.bashrc
[[ -r ~/.bashrc ]] && . ~/.bashrc
他のシェルは異なる動作をします。たとえば、 ではzsh
、.zshrc
ログイン シェルであるかどうかに関係なく、対話型シェルでは常に が読み取られます。
bash のマニュアル ページには、各ファイルが読み取られる状況が説明されています。はい、動作はマシン間で一般的に一貫しています。
.profile
は、単に が元々使用していたログイン スクリプト ファイル名です/bin/sh
。bash
は、一般に と下位互換性があり、存在する場合は/bin/sh
が読み取ります。.profile