Разница между файлом bash.bashrc и файлом /etc/environment
До даты, которую я использовал для установки переменных окружения в bash.bashrc
файл. Недавно мне сказали использовать /etc/environment
файл. Ну, оба работают нормально.
Итак, в чем разница между ними?
Я гуглил это и обнаружил, что "bashrc используется для конкретного пользователя и среды, всей системы". Что подразумевается под широкой системой здесь? /etc/bash.bashrc
также применяет изменения в масштабе всей системы. Поправь меня, если я ошибаюсь. Любая помощь будет оценена
5 ответов
Одно отличие состоит в том, что /etc/environment
содержит только определения переменных и, по-видимому, не проходит никакого расширения / интерполяции переменных. Таким образом, вы не можете ссылаться на переменные в определениях. Это, например, не будет работать:
A="else"
B="something $A"
В буквально будет something $A
не ожидаемый something else
,
Смотрите этот вопрос.
Кстати, ответ, который вы нашли через Google, похоже, относится к пользователю ~/.bashrc
вместо общесистемного /etc/bash.bashrc
, Это может быть причиной вашего замешательства.
/etc/environment
file устанавливает переменную system wide для каждого пользователя при загрузке. Команды в /etc/bash.bashrc
выполняется, если bash
Оболочка открывается любым пользователем. Таким образом, переменные не будут установлены, если bash
оболочка открывается как минимум один раз.
И, как вы спрашиваете о "всей системы":
Файлы конфигурации, расположенные в /etc
Каталог распространяется на всех пользователей системы. За /etc/bash.bashrc
это будет означать для всех и для всех, кто использует "Borne Again SHell" aka Bash на этой машине. Даже если вы единственный человек, использующий его, это может повлиять на "технических пользователей" (просто посмотрите на /etc/passwd
и проверьте, как часто там употребляется термин "/ bin / bash" - или используйте grep bash /etc/passwd | wc -l
, который должен дать вам это число напрямую (что означает: "захватить" все строки, содержащие строку "bash", из файла "/etc/passwd") и отправить результаты ("|") команде "wc" (количество слов)) считать строки ("-l").
Так что для вашего пользователя гораздо безопаснее изменить ~/.bashrc
вместо этого (имеется в виду файл ".bashrc" - с начальной точкой, да - в вашем домашнем каталоге, например /home/ankur/.bashrc
), который затем просто влияет на вашего пользователя и оставляет все остальное в покое. Файлы в /etc
следует менять только в том случае, если общесистемные изменения действительно предназначены.
Кроме того: обе конфигурации будут использоваться, если они существуют. Во-первых, общесистемный файл (здесь: /etc/bash.bashrc
) читается и "источник" (это настройки применяются к текущей сессии), а затем пользователи /home/username/.bashrc
обрабатывается так же, и, таким образом, может добавлять или даже изменять / перезаписывать настройки из глобального /etc/bash.bashrc
файл.
Помимо общесистемного и пользовательского обсуждения, наиболее существенным отличием является /etc/environment
это не сценарий, кроме ~/.bashrc
,
Вы не можете разыменовать переменную внутри /etc/environment
его присваивание переменной, которое буквально принимает значение строки (как уже упоминалось roadmr).
Your Ubuntu will lock you out if you screw up the $PATH
внутри /etc/environment
by trying to append new path
PATH=$PATH:/new_path
If your Ubuntu Gnome or Unity login page failed in letting you in without complaining wrong password. And you have recently modified /etc/environment
, it's most likely the case.
A fix is to login virtual console CTRL+ALT+F1 login console, manually check $PATH
, and fix /etc/environment
файл.
According to this, /etc/environment
is loaded by PAM stack, which populates environment variable line by line.
Разница между ними заключается в том, что /etc/enivironment
файл будет работать для всех пользователей, в то время как файл bash.bashrc будет особенно работать только для этого пользователя. И если вы делаете что-то не так в /etc/environment
файла, последствия могут быть серьезными, в то время как вы можете легко отменить изменения в файле bash.bashrc, скопировав содержимое файла /etc/environment. Но первое предпочтение отдается bash.bashrc
затем файл /etc/environment. Это не так, если вы вносите изменения в bash.bashrc
файл, то терминал будет отдавать предпочтение локальному файлу пользователя (то есть, bash.bashrc
), а затем в основной файл (т. е. /etc/environment
).