Запускать xterm с оболочкой входа или нет?

Запускать xterm с оболочкой входа или нет?

По умолчанию xtermзапускает интерактивную оболочку. Но вы также можете настроить ее на запуск интерактивнойlogin-shell.

Это означает, что при запуске xtermвы получаете ту же оболочку, что и при входе через ssh/virtual console/su.

Каковы преимущества/недостатки настройкиlogin-shellв xterm?

Я могу придумать:

  • uptime, w, lastи т.д. сообщают о стольких пользователях, сколько xtermоткрыто . (преимущество?)
  • bashтолько источники .login, .profile, /etc/profile.dкогда начинались какlogin-shell
  • zshимеет похожие файлы, которые он читает при запуске какlogin-shell- но в моей системе они по умолчанию пустые

Соответствующий 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, даже если вы ожидаете, что эта программа будет запущена только один раз за сеанс (например, ssh-agentи другие связки ключей). Запуск оболочки входа перезапишет переменные среды, которые вы установили в своем сеансе или в родительском процессе терминала.

Самая большая проблема, с которой сталкиваются люди, запускающие оболочку входа в терминалах, заключается в том, что они обычно не устанавливают переменные среды при входе в GUI. Недостатком этого является то, что переменные среды доступны только в программах, запущенных из терминала, а не в программах, запущенных напрямую через GUI. Если вы устанавливаете переменные среды во время входа в систему, то их повторная установка в каждом терминале в лучшем случае бессмысленна, а иногда и создает проблему, как показано выше.

Смотрите такжеРазница между .bashrc и .bash_profile,Альтернатива .bashrcи довольно много вопросов, которые я видел на Stack Exchange, которых можно было бы избежать, если бы задавший вопрос установил переменные среды для каждого сеанса.

Связанный контент