「グラフィックログイン」以降のシェル初期化とデスクトップアプリケーションの関係

「グラフィックログイン」以降のシェル初期化とデスクトップアプリケーションの関係

私はユーザーがテキストインターフェースを介してログインしたときにzshシェルの初期化順序に非常に慣れています()/ある程度()。bash

しかし、ユーザーがグラフィカルインタフェース(たとえば、Linuxのいわゆる「ディスプレイマネージャ」または標準のOS Xログイン)を介してログインしている場合、「グラフィックログイン」IOWはどうですか?

私は「ログインシェル」にのみ使用する必要があるファイル(.zprofile、、、)に特に興味があります.zlogin.profileこれは、テキストインターフェースを介してログインしたときの「セッションごとに一度」に対応します。

グラフィカルインターフェイスを介してログインするときに「ログインシェル」があるかどうかは不明です。誰かを待っても.zprofile。ある時点でグラフィカルログインシーケンスの一部としてインポートした場合、これらのファイルをインポートした結果(エクスポートされた環境変数など)の設定が残りのセッションにどのような影響を与えるかは不明です。

たとえば、これらの設定は、ログイン時に自動的に実行されるアプリケーションが表示する環境に影響しますか?それとも、ユーザーが後でデスクトップアイコンをクリックして実行するアプリケーションを介して?

.zshenv.zshrcまたは/ .bashrc1で発生する設定はどうですか?自動実行および/またはクリックすると、実行アプリケーションが表示する環境に影響しますか?

最後の2つの質問の1つに対する答えが「デフォルトではない」のような場合、次の質問は次のようになります。 (最小)/(およびおそらく).zprofileで行われた設定がすべての「Autostart」と「Single」アプリケーションを「起動」すると、どのような環境が表示されますか?.profile.zlogin

zsh私はシェルと2つのオペレーティングシステム(LinuxとOSX)に関するbashこれらの質問に対する答えに興味があります。


1/が/によって明示的に取得されるのではなく、.zshrc「対話型」シェルの/組み込み初期化シーケンスの一部として/が得られると仮定します。.bashrczshbash.zprofile.profile

答え1

シェルプロファイルは、シェルが呼び出されたときにのみ適用されます。彼らには魔法のようなものはありません。すべてのプロセスは環境を変更できます。ほとんどの人はただ読んでいますが、他のプログラムを実行しているプログラムであれば、そもそも環境を変える理由が簡単になります。

すべては次から始まります内部に、またはシステムのpid 1が何であるかは関係ありません。ディスプレイマネージャを起動し、ログインプロンプトを提供するXサーバーを起動します。 X11を起動する順序にログインシェルを含める必要はありません。内部にfork(2) と exec(2) は /usr/bin/startx から呼び出すことができます。ログインもなく、何もありません.profile。 Xサーバーはエクスポートされた環境のみを継承します。内部に

Xサーバー環境はどうですか? ps(1) を使用してプロセス環境を抽出できます。より簡単ですが、決定的ではありません。SSHCPU名/usr/bin/env(どこCPU名X11サーバーをホストしているコンピューターの名前。 Xサーバーで一般的に発生するものと同様に、sshdは次のことを行います。環境ログインシェルを作成する必要はありません。

次に、ディスプレイマネージャにログインしたときに何が起こるかを見てみましょう。プロセスをフォークし、uidを(おそらく)rootからユーザーのものに変更し、セッションマネージャを起動します。詳しくはフレンドリーなマニュアルをお勧めします。

それ以来、セッションマネージャは何らかの方法で環境を構築しました。生成されたプロセス(コマンドソルバーまたは他のアプリケーションを「クリック」することによって)はその環境を継承します。セッションマネージャは、アイコンごとに追加の環境変数値を定義する方法を提供できます。クリックした項目によって開始されたプロセスは、(シェルなど)起動時に設定ファイルを介して環境を変更できます。

すべてがそこにあります。環境がどのように形成されるかを理解するには、環境を作成する一連のプロセスに「ただ」従い、各プロセスが環境にどのような影響を与えるかを理解するだけです。残念ながら、このチェーンはオペレーティングシステム、ディストリビューション、マシン、およびユーザー構成によって異なりますが、特によく文書化またはツール化されていません。たとえば、sshdが起動する前にどの環境変数が設定されているかを説明する文書を検索したり、セッションマネージャ環境を表示するX11クライアントを見つけることができます。

関連情報