GNOME端末は非ログインのシェルですか?

GNOME端末は非ログインのシェルですか?

回答によるとログインシェルと非ログインシェルとは何ですか?Ask Ubuntuでは、GNOMEターミナルは非ログインシェルです。この素晴らしい本が指摘するように、FedoraおよびRed Hat Enterprise Linux実用ガイド、第6版:

対話型の非ログインシェルは、 ~/.bashrc ファイルのコマンドを実行します。デフォルトの ~/.bashrc ファイルは /etc/bashrc を呼び出します。

したがって、/etc/profile非ログインシェルでは処理されません。しかし、PATH 変数にJavaホームパスを追加し、GNOME端末を使用してコマンドを実行したときにjavaすべてがうまく機能することがわかりました。また、この変数の値はPATHで定義した値と同じです/etc/profile

上記の事実を総合してみると葛藤がありますが、私が理解した部分に問題があるのでしょうか?

答え1

/etc/profile(通常、一部のグラフィックシェルでは読みませんが、明らかにあなたの場合です)は、ディスプレイマネージャまたはttyを介してxセッションにログインすると、シェルプログラムによって選択されます。その後、ローカルファイル(ここではbashを使用すると仮定)をインポートするか、~/.bash_profileここで定義されているすべての環境変数を現在のユーザーに対して上書きします。この環境は~/.bash_login~/.profile/etc/profile遺伝学セッションで開かれたシェルを通して。だから私たちは環境変数の定義たとえば、これらのファイルのPATHです。

gnome-terminalを開くと、デフォルトでは非ログインシェルが起動しますが、ログインシェルまたはグラフィックシェルからロードされたユーザーエクスペリエンスを継承します。対話型シェルを起動するとき(gnome ターミナルを開くなど)を取得するので、上書きする~/.bashrcために使用できます。一部環境要素(例:PS1)

(gnome-terminal自体はシェルではなくアプリケーションです)

答え2

短い:なし

長い: gnome-terminal は端末です。端末でシェルを実行します。ターミナルで2つのタイプのシェル(ログインしているかどうかにかかわらず)を実行できます(gnome-terminalは他のターミナルよりも難しい)。

追加資料:

答え3

これを試してみてください。 BASHで動作します。

shopt -q login_shell && echo " <<< It's a Login Shell >>> " || echo " <<< It's \"NOT\" a Login Shell >>> "

ところで、Gnome Terminalはシェル(より具体的にはBASH)を使用するターミナルエミュレータ(アプリケーション)です。

関連情報