Файлы /etc/profile и ~/.bash_profile#
profile - это файлы, содержащие настройки среды пользователя во время входа в систему. Функции и псевдонимы при этом содержатся в /etc/bashrc (подробнее см. в «Файл bashrc»).
Расположение:
/etc/profile
~/.bash_profile
$HOME/.profile
Пользователи, у которых в качестве команды для входа используется shell, sh, выполняют команды из этих файлов как часть последовательности сценария входа в систему.
/etc/profile позволяет предоставлять сервисы для всех пользователей. например: анонс системных новостей, рассылку почты пользователя и установку переменных среды по умолчанию.
$HOME/.profile используется для настройки экспортируемых пользователем переменных среды и режимов работы терминала.
Примеры записей#
Скрипт управления переменной окружения
PATH- добавление новых путей без дублирования в соответствии с заданными условиями:pathmunge () { case ":${PATH}:" in *:"$1":*) ;; *) if [ "$2" = "after" ] ; then PATH=$PATH:$1 else PATH=$1:$PATH fi esac }Скрипт определения текущего пользователя и его среды (идентификатор, переменная имени пользователя
USERи имени в системеLOGNAME, переменная пути к почтовому ящикуMAIL):if [ -x /usr/bin/id ]; then if [ -z "$EUID" ]; then # ksh workaround EUID=`/usr/bin/id -u` UID=`/usr/bin/id -ru` fi USER="`/usr/bin/id -un`" LOGNAME=$USER MAIL="/var/spool/mail/$USER" fiСкрипт управления переменной окружения
PATHв зависимости от привилегий пользователя ("$EUID" = "0"соответствует root-пользователю):if [ "$EUID" = "0" ]; then pathmunge /usr/sbin pathmunge /usr/local/sbin else pathmunge /usr/local/sbin after pathmunge /usr/sbin after fiСтроки, используемые для определения имени хоста:
HOSTNAME=$(/usr/bin/hostnamectl --transient 2>/dev/null) || \ HOSTNAME=$(/usr/bin/hostname 2>/dev/null) || \ HOSTNAME=$(/usr/bin/uname -n)Скрипт для настройки истории команд в оболочке (размер
1000элементов, игнорирование определенных команд):HISTSIZE=1000 if [ "$HISTCONTROL" = "ignorespace" ] ; then export HISTCONTROL=ignoreboth else export HISTCONTROL=ignoredups fiСтрока экспорта определенных переменных окружения для их доступности всем последующим командам и скриптам, выполняемым в текущей сессии оболочки конкретного пользователя:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROLСкрипт чтения и выполнения всех скриптов, заканчивающихся на «.sh», из директории
/etc/profile.d/в безопасном режиме:for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do if [ -r "$i" ]; then if [ "${-#*i}" != "$-" ]; then . "$i" else . "$i" >/dev/null fi fi doneСтроки удаления переменной и определенной функции:
unset i unset -f pathmungeСкрипт загрузки начальных скриптов в зависимости от того, является ли
bashоболочкой входа; при этомbashвхода в систему запускается только с помощью/etc/profile, прочиеbashзапускаются только с помощью/etc/bashrc, проверка на наличие двойного источника выполняется в/etc/bashrc:if [ -n "${BASH_VERSION-}" ] ; then if [ -f /etc/bashrc ] ; then . /etc/bashrc fi fi
Важно
Не рекомендуется вносить изменения напрямую в файл /etc/profile. Для внесения пользовательских изменений в среду и предотвращения необходимости объединения в будущих обновлениях создайте пользовательский shell-скрипт custom.sh в /etc/profile.d/.