Что делает «Выполнить команду как оболочку входа»?

28

У меня установлено несколько отдельных программ, некоторые из которых требуют, чтобы я зашел в настройки своего терминала с графическим интерфейсом и включил / отключил опцию «Запускать команду как оболочку входа в систему», чтобы любая из них работала.

Пример:

Я установил Ruby on Rails . К сожалению, мне нужно зайти в настройки терминала и включить «Запустить команду как оболочку входа», чтобы она была в моем PATH.

Это не было большой проблемой, пока я не установил sexy-bash-prompt , который работает, только если опция отключена.

Итак, мой вопрос по существу: что делает «Выполнить команду как оболочку входа»? Есть ли способ заставить вещи, которые работают, когда он отключен, запускаться при запуске в качестве оболочки входа в систему?

AlbertEngelB
источник

Ответы:

31

Предполагая, что ваша оболочка - Bash (по умолчанию в Ubuntu), это различия:

  • При запуске в качестве оболочки входа в систему Bash будет читать ~/.bash_profile(или, если она не существует ~/.profile) при запуске. В некоторых случаях этот файл также читается ~/.bashrc.

  • При запуске в качестве оболочки без входа в систему Bash будет читать ~/.bashrc.

Итак, почему вы видите различное поведение при работе в качестве оболочки входа / не входа? Потому что ваш .bash_profile/ .profileделает разные вещи, чем ваш .bashrc.

Решение, которое я бы порекомендовал в вашем случае, состоит в том, чтобы скопировать настройки, сделанные в .bash_profile/ .profile, вставить их .bashrcи отключить «Выполнить команду как оболочку входа».

Андреа Корбеллини
источник
Ага, хорошо. Я подумал, что это связано с тем, какой профиль входа он прочитал (source'ing .bashrc исправляет некоторые проблемы, которые у меня были). Я попробую, извините за ужасно написанный вопрос.
AlbertEngelB
Спасибо за краткое объяснение. Нередко люди видят свои настройки в .bashrc и имеют .bash_profile для исходных файлов .bashrc. Настройки входа должны храниться только в .bash_profile.
MichaelZ
1
Почему бы просто не добавить исходный файл .bashrc в .bash_profile и оставить включенную оболочку входа? Это возможно?
Доктор Нефарио