ログインシェルと非ログインシェルとは何ですか? Ask Ubuntuでは、GNOMEターミナルはログイン以外のシェルの一種です。
優れた本で指摘されているように、FedoraおよびRedHat Enterprise Linuxの実用ガイド、第6版 :
対話型の非ログインシェルは、〜/.bashrcファイルのコマンドを実行します。デフォルトの〜/.bashrcファイルは/etc/bashrcを呼び出します。
その結果、/etc/profile ログイン以外のシェルでは処理されません。ただし、JavaホームパスをPATHに追加していることがわかりました。
変数であり、GNOMEターミナルを使用してコマンドjavaを発行すると 、すべてうまくいきます。また、PATHの値 変数は、/etc/profileで定義した値と同じです。 。
上記の事実を考慮すると、対立がありますが、私の理解の何が問題になっていますか?
承認された回答:
ディスプレイマネージャまたはttyを介してxセッションにログインする場合、/etc/profile (通常–明らかにそれはあなたのケースにありますが、いくつかのグラフィカルシェルはそれを読みません)あなたのシェルプログラムによって供給されます。その後、ローカルファイル(ここではbashを使用していると想定しています)~/.bash_profile 、~/.bash_login または~/.profile ソースになり、ここで定義された環境変数はすべて/etc/profileをオーバーライドします 現在のユーザーの場合。この環境は継承されます セッション内で開いたシェルによって。これが、これらのファイルでPATHなどの環境変数を定義できる理由です。
gnome-terminalを開くと、デフォルトでyesは非ログインシェルを開始しますが、ログインシェルまたはグラフィカルシェルからすでにロードされているユーザー環境を継承します。 ~/.bashrc以降 インタラクティブシェルを起動するときに供給されます(たとえば、gnome-terminalを開く)。これは、一部をオーバーライドするために使用できます。 環境の要素(PS1など)。
(gnome-terminal自体はアプリケーションであり、シェルではありません)