ログインシェルで xterm を実行するかどうか?

ログインシェルで xterm を実行するかどうか?

デフォルトではxterm対話型シェルを起動します。ただし、対話型シェルを起動するように設定することもできます。ログインシェル

つまり、を起動すると、xtermssh/仮想コンソール/su 経由でログインする場合と同じ種類のシェルが取得されます。

設定の利点と欠点は何ですか?ログインシェルxterm では?

思いつくのは:

  • uptime、、wなどは、が開いているlastのと同じ数のユーザーを報告しますxterm。(利点?)
  • bashとして開始された場合、ソースのみ.login.profile/etc/profile.dログインシェル
  • zsh起動時に読み込まれる類似のファイルがありますログインシェル- しかし私のシステムではデフォルトでは空になっています

関連するxtermマニュアルページのセクション:

   -ls     This  option  indicates  that  the shell that is started in the
           xterm window will be a login shell (i.e., the  first  character
           of  argv[0]  will  be  a  dash, indicating to the shell that it
           should read the user's .login or .profile).

次のリソースもあります:

  loginShell (class LoginShell)
           Specifies whether or not the shell to  be  run  in  the  window
           should be started as a login shell.  The default is “false.”

答え1

ターミナルでログイン シェルを実行すると、 に入力したプログラムが実行されます.profile。これは、そのプログラムがセッションごとに 1 回しか実行されないと予想される場合でも同様です (たとえば、ssh-agentやその他のキーリング)。ログイン シェルを実行すると、セッションまたはターミナルの親プロセスで設定した環境変数が上書きされます。

ターミナルでログイン シェルを実行するユーザーが経験する最大の問題は、通常、GUI にログインするときに環境変数を設定しないことです。この欠点は、環境変数がターミナルから起動されたプログラムでのみ使用可能であり、GUI から直接起動されたプログラムでは使用できないことです。ログイン時に環境変数を設定すると、各ターミナルで再度設定しても意味がなく、上記のように問題が発生することがあります。

参照.bashrc と .bash_profile の違い.bashrc の代替Stack Exchange で見かけた質問の中には、質問者がセッションごとに環境変数を設定していたら避けられたはずの質問がかなりありました。

関連情報