Я понимаю, что есть /etc/profile
и /etc/bashrc
файлы для установки глобальных переменных среды, и, возможно, я просто неправильно понимаю их цели, но ...
Есть ли глобальный bash_profile
файл?
Я использую Mac OS X
Это не называется bash_profile
, но стандартным местом для глобальной конфигурации bash является /etc/bash.bashrc
. Обычно это вызывается, /etc/profile
если оболочка bash. Например, по моему у /etc/profile
меня есть:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
С точки зрения использования, /etc/profile
обеспечивает общесистемную конфигурацию для всех совместимых с Bourne оболочек (sh, bash, ksh и т. Д.). Обычно нет необходимости в аналоге /etc/bash_profile
, поскольку целью файла профиля является управление поведением для оболочек входа в систему. Обычно все, что вы хотите сделать, не зависит от bash. /etc/bash.bashrc
является специфичным для bash и будет работать как для входа в систему, так и для входа в систему без входа в систему.
Чтобы еще больше усложнить ситуацию, похоже, что OS X даже не имеет /etc/bash.bashrc
. Вероятно, это связано с тем, что терминалы в OS X по умолчанию работают в качестве оболочек входа , поэтому различие потеряно:
Исключением из правил окна терминала является Mac.X Terminal.app, который запускает оболочку входа по умолчанию для каждого нового окна терминала, вызывая .bash_profile вместо .bashrc. Другие эмуляторы терминала GUI могут делать то же самое, но большинство этого не делают.
Я не использую OS X, поэтому на этом мои знания заканчиваются.
/etc/bash.bashrc
из неинтерактивной оболочки./etc/profile
может быть прочитан неинтерактивной оболочкой. Видите разницу между оболочкой входа и не входящей в систему оболочкой?/etc/profile
в Ubuntu 12.04. Что бы вы предложили вместо этого, если бы кто-то хотел, чтобы/etc/profile
он выполнялся только под bash, а другой sh-совместимой оболочки не было?/etc/profile
файлы для моей системы содержит комментарий в верхней части , который гласит:# System-wide .profile for sh(1)
. Это значитprofile
что-тоsh
конкретное? Работает лиsh
как-то раньшеbash
?sh
это подмножествоbash
./etc/profile
выполняется дляsh
,bash
и все другие Bourne-совместимые оболочки./etc/bashrc
на Mac, а не/etc/bash.bashrc
. Это также, кажется, бежит/bin/sh
также./etc/profile
является глобальнымbash_profile
. Нет никакого файла, специфичного для bash, bash просто читает стандартный файл, читаемый всеми оболочками в стиле Bourne. Вот где вы можете установить общесистемные переменные среды.См. Есть ли ".bashrc" эквивалентный файл, прочитанный всеми оболочками? для общего обзора общих файлов запуска bash.
источник
Настройка интерактивной оболочки (Bash) по всему миру
Это не загружается
/etc/profile
, так что ничего в/etc/profile.d/
не загружается (в отличие от логинов, смотрите конец).Глобальный файл для этого - / etc / bashrc или /etc/bash.bashrc (в зависимости от
-DSYS_BASHRC=
флага, установленного во время компиляции):Обычно рекомендуется оставить этот файл как есть (насколько это возможно), чтобы избежать конфликтов. Стратегия, которую я использую, похожа на ту, которую используют оболочки (/ etc / profile).
Моя стратегия заключается в добавлении загрузчика в указанный выше файл:
Теперь я могу легко добавить n настроек в глобальный интерактивный (bash) файл оболочки, поместив новые файлы .shfiles в каталог /etc/bashrc.d.
Colorize Grep в глобальном масштабе
/etc/bashrc.d/grep.sh
Вы можете сделать это с помощью одной строки:
Сравните profile.d против bashrc.d
Если, прочитав это, вы не будете убеждены, сделайте это, чтобы убедить себя:
Откройте новый эмулятор терминала и найдите какое-нибудь общее слово в вашем пользовательском каталоге, например «the», используя grep
Ничто не должно быть цветным. Сделайте то же самое в виртуальной консоли, выполнив CTRLALTF1 (помните, что ваш X-сервер, вероятно, работает на CTRLALTF7, чтобы вы могли переключиться обратно. Если вы забыли, просто перезапустите менеджер рабочего стола, например)
даст цветные результаты по желанию.
Ничто не должно быть цветным. Сделайте то же самое в виртуальной консоли, выполнив CTRLALTF1(помните, что ваш X-сервер, вероятно, работает на CTRLALTF7этом, чтобы вы могли переключиться обратно. Если вы забыли, просто перезапустите менеджер рабочего стола, например)
даст цветные результаты по желанию.
Оболочка входа в систему - это то, что вы получаете, когда загружаете машину или переключаете виртуальные консоли CTRLALTF1через FNthвиртуальную консоль.
Оболочка для входа загружает,
/etc/profile
а загружает/etc/profile.d/*.sh
файлыисточник