~/.profile、~/.bashrc、~/.bash_profile、~/.gnomerc、/etc/bash_bashrc、/etc/screenrc ... の違いは何ですか?

~/.profile、~/.bashrc、~/.bash_profile、~/.gnomerc、/etc/bash_bashrc、/etc/screenrc ... の違いは何ですか?

質問に対する回答それでそしてアスクブントゥは、 および を調べる(およびヘッダーを読み取る)とともに$HOME/etc/環境変数を設定するために使用できるいくつかのファイルを示します。これには次のものが含まれます。

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

/etc/のファイルはすべてのユーザーに対して機能するのに対し、 のファイル$HOMEはユーザー固有であることがわかります。また.profile、 はログイン時に読み込まれるのに対し、 は実行.bashrc時に読み込まれること/bin/bashもわかりました。プログラムによって設定ファイルが異なることも理解しています (例.Rprofile: R)。ただし、いくつか説明していただければ幸いです。

  • *rcとファイルは根本的に異なるのでしょうか*profile?
  • そのようなファイルの範囲は何ですか(例:Linuxでよく使用されるファイルはどれですか)
  • 階層はありますか(例:.bashrcに設定された変数を上書きします.settings
  • このクラスのファイルに関する適切なリファレンスは何ですか? これらのファイル内のオプションについてはどうですか?

関連質問

答え1

設定ファイルの構成は、あなたの質問が示唆しているほど統一されていません。「クラス」も「階層」もありませんし、あなたが求めているような共通の構文やその他のすっきりした一般化を定めるグローバルな「設定責任者」や委員会もありません。 、 、GNOME デスクトップ環境など、多数の個別のアプリケーションがありRbashそれぞれscreen独自の方法で処理を行っているため、疑問に思うことがあれば、各プログラムのドキュメントを参照してください。特定の特定のファイルに関する質問。アドホックに思えるかもしれませんが、それはその通りです。世の中にある Unix / Linux ソフトウェアのほとんどは、それぞれ異なる目的で、それぞれ異なる人々によって開発されており、それぞれが少しずつ異なる方法で構成を行っています。

その他の質問にポイントごとにお答えします:

  • *rcあまり意味がないので*profile、この質問に実際に答えることはできません。「rc」は、単に設定ファイルの一般的な略語または接尾辞です。その語源は古代(コンピュータの時代)にまで遡り、おそらくコマンドの実行を意味します(ランコムアプリケーションが同じ単語を使用しているからといって、規則に同意しているわけではありません。「profile」はあまり一般的ではない接尾辞です。

  • 「スコープ」を定義します。ほとんどのアプリケーションは、他の関連しないアプリケーションと設定ファイルを共有しません。唯一の例外は、複数の異なるシェル(少なくともと を含む)で使用される可能性がある/etc/profileとです。.profileshbash環境実行中のすべてのプロセスに関連付けられており、そのプロセスの動作に影響を与える可能性のある変数が含まれている場合があります。通常、環境変数は適切なシェル構成ファイル、または使用しているグラフィカル デスクトップ環境の構成ファイルによって設定されます。readline.inputrc.gtkrc*GTK などの「ライブラリ」用の構成ファイルもあり、ライブラリを使用するすべてのアプリケーションに影響します。

  • いいえ、設定ファイルにはグローバル階層はありません。繰り返しになりますが、問題の特定のプログラムのドキュメントを参照してください。たとえば、bashマニュアルの場合。 のユーザー設定は、 のシステム全体の構成よりも優先されるというのbashが、通常信頼できる一般的な規則です。 これは通常、システム ファイルの後にユーザー ファイルを読み取ることで実現され、後の設定が前の設定を上書きします。 ただし、これは保証ではありません。確実な答えを得るには、使用している特定のプログラムのドキュメントを参照してください。$HOME/etc

  • 「クラス」というものは存在しません。少なくとも、質問で挙げたすべてのファイルを網羅できるほど一般的なクラスは存在しません。そのため、そのような「クラス」の参照に関する質問は意味がありません。繰り返しになりますが、使用している特定のプログラムのドキュメントを参照してください。

答え2

この質問は多くの点で範囲が広すぎると思います。例えば、少なくとも/etc1 つの質問で異なるプログラムについて説明します。との設定ファイルの違いのみを見ていきます$HOME

sshUnix はマルチユーザー オペレーティング システムです。つまり、、、またはtelnetを使用して、多くの異なるユーザーがシステムを使用できますXorg。ユーザーに対して標準化された構成を提供するには、でシステム全体の構成を提供します。/etc/これは通常、ディストリビューションによって、またはなどのグローバル構成を提供するためにも使用されbashますscreen

一方、キーバインディング、色、外観など、プログラムの設定を独自にカスタマイズしたいユーザーもいます。これは、 の設定ファイルを介して行われます$HOME。つまり、 は/etc/システム全体の設定を提供し、 $HOME の設定ファイルを使用すると、ユーザーはシステム全体の設定を変更/上書きできます。

答え3

答えの一部はこの郵便受け:

.bashrcBash が対話的に起動されるたびに実行されるシェル スクリプトです。

対照的.bash_profileに、.profileこれらは新しいログイン シェルの開始時にのみ実行されます。(bash -l)

コマンドを 1 回だけ実行するか、対話型シェルの起動ごとに実行するかに応じて、コマンドを入力するかどうかを選択します.bashrc.bash_profile

関連情報