私はいくつかの種類の Linux (CentOS、SuSe、および Ubuntu) を使用していますが、PATH をいじる必要があるたびに、デフォルトで定義されているものがどこにあるのかわからないという問題に遭遇しました。
私が知っていることから~/.bashrc
、~/.bash_profile
と/etc/profile
は方程式の一部です。これらのファイルの使用法と違いを知っている人はいますか?
私はいくつかの種類の Linux (CentOS、SuSe、および Ubuntu) を使用していますが、PATH をいじる必要があるたびに、デフォルトで定義されているものがどこにあるのかわからないという問題に遭遇しました。
私が知っていることから~/.bashrc
、~/.bash_profile
と/etc/profile
は方程式の一部です。これらのファイルの使用法と違いを知っている人はいますか?
/etc/profile
は、ログイン シェル (対話型または非対話型) のグローバル構成であり、ログイン シェル~/.bash_profile
のユーザーごとの~/.bashrc
構成であり、対話型の非ログイン シェルの構成です。
からman bash
:
呼び出し
[...]
bash が対話型ログイン シェルとして、または --login オプションを指定した非対話型シェルとして呼び出されると、最初にファイル /etc/profile からコマンドを読み取り、実行します (そのファイルが存在する場合)。そのファイルを読み取った後、~/.bash_profile、~/.bash_login、および ~/.profile をこの順序で検索し、最初に存在して読み取り可能なコマンドからコマンドを読み取って実行します。--noprofile オプションは、シェルの起動時にこの動作を禁止するために使用できます。
[...]
ログイン シェルではないインタラクティブ シェルが開始されると、bash は ~/.bashrc ファイルが存在する場合はそこからコマンドを読み取り、実行します。これは、 --norc オプションを使用することで抑制できます。--rcfile file オプションを指定すると、bash は ~/.bashrc ではなく、ファイルからコマンドを読み取って実行するようになります。
.bashrc
特定のユーザーのシェル環境を定義します。これは、bash が起動するたびに実行されます。対話型シェル、リモート呼び出しからの実行ssh user@host cat /etc/hosts
、単なるシェル スクリプトなど、どのモードで実行されているかに関係なく実行されます。
.bash_profile
ユーザーごとのログイン プロファイルです。これはログイン時に 1 回実行され、その日のメッセージや新しいメッセージのリストなど、ユーザーがシステムと対話するときに必要なことを行います。
/etc/profile は、システム全体のログイン プロファイル スクリプトです。また、ログイン時に1回実行されますが、ユーザー固有の前にすべてのユーザーに対して実行されます.bash_profile
PATH 変数などの環境変数については、.bashrc または /etc/bash.bashrc が適しているため、ログイン シェルまたは非ログイン シェルについて心配する必要はありません。
このページにはいくつかの詳細があります: http://stefaanlippens.net/bashrc_and_others