web-dev-qa-db-ja.com

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

[〜#〜] so [〜#〜] および askubunt に関する質問への回答、および$HOME/etc/、環境変数を設定するために使用できるいくつかのファイルを示します。

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

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

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

リンクされた質問

70
Abe

構成ファイルの構成は、質問が示唆するように思われるよりもはるかに均一ではありません。 「クラス」も「階層」もありません。また、グローバルな「構成ウィザード」も、一般的な構文や、求めているようなニースな一般化を決定する委員会もありません。 Rbashscreenのような個別のアプリケーションは多数あり、GNOMEデスクトップ環境はすべて独自の方法で動作するため、特定のファイルに関する固有の質問に答えるために、各プログラムのドキュメントで。それがその場しのぎのように思える場合、それはそれが理由です。ほとんどのUnix/Linuxソフトウェアは、すべてわずかに異なる構成を行ったさまざまな人々によってさまざまな目的のために開発されました。

他の質問に個別に回答するには:

  • *rc*profileはあまり意味がないため、この質問には実際には回答できません。 「rc」は、構成ファイルに一般的に使用される略語またはサフィックスにすぎません。その語源は古代(コンピューター年では)に遡り、おそらく実行コマンドを意味します( runco​​m から)。アプリケーションが同じWordを使用しているからといって、規則に同意しているわけではありません。 「プロファイル」は、あまり一般的ではないサフィックスです。

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

  • いいえ、構成ファイルのグローバル階層はありません。再度、問題の特定のプログラムのドキュメントを参照してください。たとえば、bashの-​​ bash manual です。通常信頼できる一般的な規則は、$HOMEのユーザー設定が/etcのシステム全体の構成をオーバーライドすることです。これは通常、システムファイルの後にユーザーファイルを読み取ることで行われます。これにより、後の設定で前の設定が上書きされます。ただし、これは保証ではなく、明確な回答については、使用している特定のプログラムのドキュメントを参照してください。

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

49
jw013

この質問は、非常に多くのレベルで広すぎると思います。 1つの質問で少なくとも4異なるプログラムについて質問している。 /etc$HOMEの構成ファイルの違いのみを見ていきます。

Unixはマルチユーザーオペレーティングシステムです。つまり、sshtelnet、またはXorgのいずれかを使用して、さまざまな人がシステムを使用できます。ユーザーに標準化された構成を提供するために、/etc/でシステム全体の構成を提供できます。これは通常、ディストリビューションでも使用され、たとえば、 bashまたはscreen

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

5
Ulrich Dangel

答えの一部は この投稿 から来ています:

.bashrcは、インタラクティブに起動されるとBashが実行するシェルスクリプトです。

新しいログインシェルの開始時にのみ実行される.bash_profile.profileを比較してください。 (bash -l)

コマンドを.bashrc.bash_profileのどちらで実行するかは、コマンドを1回実行するか、対話式のシェルを開始するたびに実行するかに応じて選択します。

3
Stan