Bash, не загружающийся '.profile' на новой сессии на Linux

Я настраиваю новую машину Linux, которую я получил от нашего отдела IT и заметил .profile не загружается, когда я запускаю новый терминальный сеанс. Текущая оболочка является Bash, хотя я изменил его от значения по умолчанию sh, это шло. Как я заставляю его загрузиться .profile на запуске?

Я получаю доступ к оболочке через SSH: ssh myusername@remotemachine. У меня есть права администратора на нем.

20
задан 17.11.2017, 07:07

2 ответа

Когда Bash запускается как интерактивная оболочка входа в систему, один из файлов, которые это может обработать, ~/.profile.

Когда это запускается как интерактивная оболочка невхода в систему, это не делает. Это обрабатывает /etc/bash.bashrc (если тот файл или подобный файл включены в Вашей версии Bash), и ~/.bashrc.

Вы могли добавить следующее к Вашему ~/.bashrc (но остерегаться циклов или значений, изменяемых непреднамеренно):

. $HOME/.profile
23
ответ дан 07.12.2019, 10:10

Это отчасти зависит, как Вы запускаете свою оболочку. Как другие сказали, оболочка входа в систему загрузит Ваш профиль (это будет искать .bash_profile сначала, затем попробует .profile). Если это находит один из них, это загружает их. Оболочка невхода в систему (или интерактивный или неинтерактивная) получит .bashrc.

Я предложил бы поместить все в .bashrc. Разделение .profile/.bashrc было довольно произвольно и имело больше смысла в былые времена UNIX, когда tty не был просто именем устройства и означал фактический TeleType. Это было предназначено для запуска определенных вещей (как проверка почты) на 'основном' входе в систему сервера и просто нормальном материале установки для других оболочек. В большинстве Linux Вы войдете в систему теперь, Вы действительно не входите в оболочку, как Вы входите в некоторый графический интерфейс (KDE, гном, CDE 'дрожь'). "Процессы входа в систему икры" теперь заботятся о Вашим менеджером сеансов. Это намного менее релевантно теперь.

Мое предложение: Заставьте свой .profile состоять из только:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

как первая строка .bashrc, примите меры против странного случая материала при запущении скрипта удара, выскочив рано:

[[ $- != *i* ]] && return
15
ответ дан 07.12.2019, 10:10

Теги

Похожие вопросы