私はデフォルトですべての設定を.bashrcに入れ、zshを使用するとすべての設定を.zshrcに入れます。
Rustインストーラが.profileを修正して、私のPATHに新しいインストールを追加したという通知を送信しました。
いつ何が起こるべきですか~/.profile
?
これは私がどのシェルを使用しているのかわからないので、またはすべての一般設定が.profileにあるべきですか?
答え1
.profile
すべてのログインシェルから読み込み、.xxxrc
すべての対話型シェルから読み込みます.profile
。
追加する内容に応じて決定する必要があります。
良いアイデアは、エクスポートされた環境変数を設定して、サブシェルに伝播されるすべてのエントリを.profileに入れることです。
伝播されないものは、.bashrcまたはシェルが探しているすべてのものになければなりません。たとえば、エイリアスと関数定義があります。
答え2
Bash には、実行するスクリプトと時期に関するかなり複雑なロジックがあります。
ただし、主に次のように要約されます。
- あなたの設定親プロセスから子プロセスに継承(環境変数、s)は通常、
ulimit
ログインごとに一度だけ設定する必要があります。.profile
.bashrc
- 両方の設定がある場合遺伝学そして添加物
PATH
(たとえば、And wastefulなどの構文を使用する既存の値に何かをPATH=$PATH:/some/directory
追加することです。たとえば、に設定するとデフォルトのシェルでうまく機能しますが、エディタを起動してシェルエスケープ機能を使用するとPATHに同様の値があることがわかります。各サブシェルは通常ディレクトリをPATHに追加します。.bashrc
PATH=$PATH:/some/directory
.bashrc
...:/some/directory:/some/directory
.profile
- あなたの設定遺伝しないシェルエイリアスや関数などの一般的なプロセス間では、それを定義する必要があります
.bashrc
。で定義すると、.profile
さまざまなアプリケーションでシェルエスケープ機能を使用して実行されたシェルでは使用できないことがわかります。 (また、ディストリビューションの標準またはデフォルト値がすでにこの機能を提供していない限り、セッションのデフォルトのログインシェルもこれらの定義を取得するためにソースを取得するためにコマンドの.bashrc
最後にコマンドを追加する必要があるかもしれません。).profile
/etc/profile
.profile
グラフィカルユーザーインターフェイスを使用すると、別のレベルの複雑さが追加されます。 GUIセッションは通常、.profile
ログイン時またはそれに対応するセッションを取得するため(セッション開始スクリプトがログインシェルとして実行されるため)、すべての継承可能な設定は通常デスクトップ環境から継承され、継承可能なすべての設定もデスクトップ環境に継承されます。になります。デスクトップアイコンまたはメニューを使用して実行されるアプリケーション。
X11 GUIセッションのすべての端末ウィンドウは、次の2つの方法のいずれかに設定できます。
- 完全に独立したターミナルセッション:各ターミナルウィンドウは独立したログインセッションとして扱われ、環境はターミナルエミュレータのインプロセスシェルのいくつかのデフォルトシステム全体のデフォルトに基づいて構築されます。この場合、各新しいターミナルウィンドウはログインシェルとして実行されるため、
.profile
開いたときに同等の操作が実行されます。 - 各端末ウィンドウは、基本 GUI ログインセッションの一部とみなされます。この場合、ターミナルウィンドウ内のシェルは非ログインシェルで始まり、実行されるか、
.bashrc
それに対応するシェルのみが実行されます。継承可能な設定は、デスクトップ環境/ウィンドウマネージャプロセスを介してデフォルトのGUIログインセッションから継承されます。