/ etc / profile vs ~ / .profile


13

Я запускаю Ubuntu 12.04.1 LTS. И я не могу понять, каков порядок / приоритет загрузки файлов профиля. Когда я запускаю систему и захожу в систему через графический интерфейс, какой файл загружается? И почему? Что делать, если запустить login-shell? Будет ли это так же? На самом деле сейчас я не могу понять, почему мой ~/.profileне загружается при запуске системы, потому что здесь я вижу, что это должно:

https://help.ubuntu.com/community/EnvironmentVariables


Как вы проверяете, загружен ли ~ / .profile?
Андреа Корбеллини

Переменная окружения обновлена ​​в ~ / .profile
sunprophit 19.12.12

Ответы:


3

Вы можете определить переменную в каждом файле:

ORDER=${ORDER}+"/etc/profile"

соответственно

ORDER=${ORDER}+"~/.profile"

и выполнить

echo ${ORDER}

чтобы увидеть, что было вовлечено и в каком порядке. Конечно, это не скажет вам, если были разные сценарии, которые вы пропустили.

Поэтому, если вы видите один упомянутый источник, прочитайте этот скрипт, чтобы посмотреть, является ли один скрипт источником другого, и включите их тоже.

На ум приходят /etc/bash.bashrc и ~ / .bashrc и ~ / .bash_login, а также вещи из / etc / default.


Хм, $ ORDER пусто, что означает, что ни один из них не загружен?
Sunprophit

Не уверен, почему $ ORDER был пуст, возможно, из-за некоторой синтаксической ошибки. Я мало знаю о различиях между тире и бэшем. Хотя я собираюсь отметить ваш ответ как правильный, потому что это помогло понять, в чем проблема.
Sunprophit

7

Все зависит от того, с каким пользователем вы пытаетесь войти. Глобальный /etc/profileфайл загружается для каждого пользователя , а ~/.profileзагружается только для пользователя.

~указывает на домашний каталог текущего пользователя. Таким образом, если вы введете его /home/user-a/.profileи войдете в систему как user-a, глобальный и его пользовательский файл будут загружены (в таком порядке), тогда как если вы войдете как user-bбез .profileфайла, он загрузит только глобальный файл.


В профиле текущего пользователя (~ / .profile) есть часть, которая должна обновлять переменные среды. Я имею в виду, что это не в каком-то другом профиле. Это профиль этого пользователя. Но я попробовал решение @user_unknown для проверки загрузки профилей, и кажется, что ни один из них не загружен.
Sunprophit

0

Оба должны быть загружены, и ~ / .profile должен быть загружен последним (это означает, что он имеет приоритет).


Тогда я не уверен, что происходит. Если я запускаю его явно в терминале, он загружается. Может быть проблема во время входа в систему и в результате ~ / .profile не загружается, но тогда в терминале нет этих проблем. Могу ли я проверить, пыталась ли система загрузить его?
Sunprophit

0

Это моя вина. В моем ~ / .profile был [[some_test]], и он хорошо работает в bash, но я предполагаю, что dash запускает некоторые команды pre_session_creation / post_session_creation при запуске сеанса, а dash не знает [[ключевое слово. Так что все было загружено, но остановилось на ошибке.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.