是否使用登入 shell 運行 xterm?

是否使用登入 shell 運行 xterm?

預設xterm啟動一個互動式 shell。但您也可以將其配置為啟動互動式登入外殼

這表示啟動後xterm您將獲得與透過 ssh/虛擬控制台/su 登入相同的 shell。

配置a的優點/缺點是什麼登入外殼在 xterm 中?

我能想到:

  • uptimewlast報告與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

在終端機中執行登入 shell 將執行您放入 中的任何程序.profile,即使您希望該程式每個會話僅執行一次(例如,ssh-agent和其他金鑰環)。執行登入 shell 將覆蓋您在會話或終端父進程中設定的環境變數。

在終端機中執行登入 shell 的人遇到的最大問題是,他們在登入 GUI 時通常不會設定環境變數。這樣做的缺點是環境變數僅在從終端啟動的程式中可用,而在透過 GUI 直接啟動的程式中不可用。如果您確實在登入時設定了環境變量,那麼在每個終端中再次設定它們充其量是毫無意義的,有時還會出現如上所示的問題。

也可以看看.bashrc 和 .bash_profile 之間的差異,.bashrc 的替代方案,以及我在 Stack Exchange 上看到的許多問題,如果提問者為每個會話設定了環境變量,這些問題就可以避免。

相關內容