web-dev-qa-db-ja.com

.profile .bash_profileと.bashrcの機能の違いは何ですか

.profile.bash_profile.bashrcファイルの機能の違いは何ですか?

220
lollercoaster

.bash_profile.bashrcbashに固有ですが、.profileは独自のシェル固有の構成ファイルがない場合に多くのシェルによって読み取られます。 (.profileは元のBourneシェルで使用されていました。).bash_profileまたは.profileは、.bashrcとともにログインシェルによって読み取られます。サブシェルは.bashrcのみを読み取ります。 (ジョブ制御と最新のウィンドウシステムの間では、.bashrc自体はあまり使用されません。screenまたはtmuxを使用する場合、画面/ウィンドウは通常、ログインシェルではなくサブシェルを実行します。)

この背後にあるアイデアは、.profile(またはそのシェル固有のバージョン)によって1回限りのセットアップが行われ、.bashrcによってシェルごとの設定が行われるというものでした。たとえば、一般に、セッション内でサブシェルを起動するたびに環境変数を破壊するのではなく、セッションごとに1回だけ環境変数をロードする必要がありますが、エイリアスは常に必要です(環境変数のように自動的に伝播されません)。

その他の注目すべきシェル設定ファイル:

/etc/bash_profile(フォールバック/etc/profile)は、システム全体の構成ではユーザーの.profileの前に読み取られ、同様にサブシェルでは/etc/bashrc(このフォールバックなし)が読み取られます。 Ubuntuを含む多くのシステムでも、シェルスクリプトレットを含む/etc/profile.dディレクトリを使用しています。これは、.から/etc/profilesource)で編集されたものです。ここでのフラグメントはシェルごとであり、*.shはすべてのBourne/POSIX互換シェルに適用され、その他の拡張機能はその特定のシェルに適用されます。

180
geekosaur

。profile

.profileは、環境変数Bashや友人など、PATHに特に関係のないもの用であり、いつでも利用できるはずです。

たとえば、グラフィカルデスクトップセッションを開始するときに.profileもロードする必要があります。


。bashrc

.bashrcは、Bash aliases、お気に入りの設定editorBash Promptの設定など、インタラクティブなBashの使用法を構成するためのものです。


。bash_profile

.bash_profileは、.profile.bashrcの両方がlogin shellsに対して読み込まれるようにするためのものです。

たとえば、.bash_profileは次のような単純なものになります

. ~/.profile
. ~/.bashrc

.bashrcを省略した場合、.profileのみが読み込まれます。

74
MangeshBiradar

Bashのmanページによると、.bash_profileはログインシェルに対して実行され、.bashrcはインタラクティブな非ログインシェルに対して実行されます。

では、ログインシェルまたは非ログインシェルとは何ですか?

マシンに座っているか、sshを介してリモートでコンソールからログイン(ユーザー名とパスワードを入力)すると、最初のコマンドプロンプトの前に.bash_profileが実行され、シェルが構成されます。ただし、すでにマシンにログインしていて、GnomeまたはKDE内で新しいターミナルウィンドウ(xterm)を開いている場合は、ウィンドウコマンドプロンプトの前に.bashrcが実行されます。 .bashrcは、ターミナルで/bin/bashと入力して新しいbashインスタンスを開始するときにも実行されます。

ターミナルウィンドウのガイドラインの例外は、Mac OS XのTerminal.appです。これは、新しいターミナルウィンドウごとにデフォルトでログインシェルを実行し、.bash_profileではなく.bashrcを呼び出します。他のGUI端末エミュレータでも同じことができるかもしれませんが、ほとんどの場合そうではありません。

詳細 ここ

41
Paulecci