По умолчанию xterm
запускает интерактивную оболочку. Но вы также можете настроить ее на запуск интерактивнойlogin-shell.
Это означает, что при запуске xterm
вы получаете ту же оболочку, что и при входе через ssh/virtual console/su.
Каковы преимущества/недостатки настройкиlogin-shellв xterm?
Я могу придумать:
uptime
,w
,last
и т.д. сообщают о стольких пользователях, сколькоxterm
открыто . (преимущество?)bash
только источники.login
,.profile
,/etc/profile.d
когда начинались какlogin-shellzsh
имеет похожие файлы, которые он читает при запуске как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, которых можно было бы избежать, если бы задавший вопрос установил переменные среды для каждого сеанса.