デフォルトではxterm
対話型シェルを起動します。ただし、対話型シェルを起動するように設定することもできます。ログインシェル。
つまり、を起動すると、xterm
ssh/仮想コンソール/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 で見かけた質問の中には、質問者がセッションごとに環境変数を設定していたら避けられたはずの質問がかなりありました。