До даты я использовал для установки переменных окружения в bash.bashrc
файле. Недавно мне сказали использовать /etc/environment
файл. Ну, оба работают нормально.
Итак, в чем разница между ними?
Я гуглил это и обнаружил, что «bashrc используется для конкретного пользователя и среды, всей системы». Что подразумевается под широкой системой здесь? /etc/bash.bashrc
также применяет изменения в масштабе всей системы. Поправь меня, если я ошибаюсь. Любая помощь будет оценена
источник
/etc/environment
Файл устанавливает переменную систему широкой для каждого пользователя при загрузке. Команды в команде/etc/bash.bashrc
выполняются, еслиbash
оболочка открыта любым пользователем. Таким образом, переменные не будут установлены, еслиbash
оболочка не будет открыта хотя бы один раз.источник
И, как вы спрашиваете о " всей системы ":
Файлы конфигурации, расположенные в
/etc
каталоге, применяются ко всем пользователям системы. Ибо/etc/bash.bashrc
это значило бы для всех и всего, кто использует «Borne Again SHell», также известный как 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).Ваш Ubuntu будет заблокирован , если вы завинчивать
$PATH
внутрь/etc/environment
, пытаясь добавить новый путьЕсли ваша страница входа в Ubuntu Gnome или Unity не позволила вам войти, не пожаловавшись на неверный пароль. И вы недавно изменили
/etc/environment
, это, скорее всего, так.Исправление - войти в виртуальную консоль CTRL+ ALT+ F1войти в консоль, вручную проверить
$PATH
и исправить/etc/environment
файл.В соответствии с этим ,
/etc/environment
загружается стек PAM, который заполняет переменную окружения строка за строкой.источник
Разница между ними заключается в том, что
/etc/enivironment
файл будет работать для всех пользователей, в то время как файл bash.bashrc будет особенно работать только для этого пользователя. И если вы делаете что-то не так в этом/etc/environment
файле, последствия могут быть серьезными, в то время как вы можете легко отменить изменения в файле bash.bashrc, скопировав содержимое файла / etc / environment. Но первое предпочтение отдаетсяbash.bashrc
файлу, а затем файлу / etc / environment. Дело не в том, что если вы вносите изменения вbash.bashrc
файл, то терминал сначала будет отдавать предпочтение локальному пользовательскому файлу (т. Е.bash.bashrc
), А затем главному файлу (т. Е./etc/environment
).источник