.profile не работает, когда я запускаю терминал bash


15

Когда я запускаю терминал bash, мой .profile не выполняется. У меня нет ~ / .bash_profile или ~ / .bash_login, так что .profile должен работать, верно? Что еще может быть не так?

Ответы:


23

Это не оболочка для входа.

Если оболочка является оболочкой входа в систему, она будет искать .bash_profile, если она существует, то .profile. Другие оболочки ищут .bashrc

Таким образом, вы можете поместить нужные вещи в каждый экземпляр оболочки в .bashrc и, возможно, иметь ссылку на источник .bashrc в .profile.

Итак: .bashrc:

stuff you want

конец .profile:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc

Итак, когда я запускаю 'konsole' в KDE, это оболочка не для входа, верно? На другой машине я определенно поместил вещи в .profile и заставил их работать, когда я открываю терминал, как этот - я думаю, я не понимаю, когда вы хотите, чтобы что-то происходило при входе в систему по сравнению с открытием терминала?
Дэвид Дория

@DavidDoria это зависит, я изменил конфиги или сделал псевдонимы для того, что запускает консоль, чтобы она работала bash --login. В вашем случае кажется, что он просто запускает bash, который по умолчанию не запускает оболочку входа
Rich Homolka

Если вы используете LightDM, это может быть причиной. Другие дисплеи, такие как GDM и KDM, исходят при входе в систему .profile, а LightDM - нет (умышленно). См. Bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
Дженнингер

Я использую KDM.
Дэвид Дория

2
Если вы используете Gnome Terminal, вы можете выполнить «Правка» -> «Настройки профиля», перейти на вкладку «Заголовок и команда» и установить флажок «Выполнить команду как оболочку входа». Затем, как и ожидалось, он будет отправлять ваш .bash_profile или .profile всякий раз, когда вы открываете терминал.
Ламбарт


1

Если вы используете графический рабочий стол, ваш менеджер рабочего стола должен получить .profile. Lightdm делает исходники .profile сейчас, по крайней мере, в Ubuntu. Смотрите: https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

При использовании kdm и Kubuntu-12.04 файл / etc / kde4 / kdm / Xsession получает источник, в том числе и .profile. Kubuntu-12.10, вероятно, будет использовать lightdm. Ubuntu 12.04 использует lightdm, поэтому / usr / sbin / lightdm-session source .profile.

Я думаю, что путь - это (1) установить / экспортировать настройки среды в ~ / .profile и (2) получить .profile от .bash_profile:

[[ -f ~/.profile ]] && . ~/.profile

(и не иметь .bashrc от .profile или .bash_profile).

Смотрите также:


1
Это объясняет, как получить ваш .profileисточник при входе в систему, но на самом деле он интересуется, как получить bashего, когда запускает терминал (не при входе в систему)
cpast

Вы не должны хотеть иметь источник .profile при запуске нового терминала (из KDE). Вся цель .profile - получить его один раз при входе в систему, либо на графическом терминале, либо на текстовом терминале; .profile должен был быть получен в тот момент, когда вы вошли в KDE.
Фредди Вулто

.profile должен быть получен вашим настольным менеджером. Ну, это зависит от понимания цели файла. В Debian / etc / profile (и ~ / .profile как его расширение) предназначен для оболочек, похожих на bash .
Алоис Махдал

Вам не нужно вводить его снова, ЕСЛИ он получен при входе в систему. ваш bash унаследует его, если вы не делаете что-то глупое, например "export PATH = ~ / .bin" или что-то, вызывающее его перезапись.
RichieHH
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.