ログインシェルと非ログインシェルとは何ですか? 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自体はアプリケーションであり、シェルではありません)