Библиотека сайта rus-linux.net
| Beyond Linux From Scratch. Version 2011-12-30 | ||
| Назад | 3. Завершающие настройки в системе LFS | Вперед |
Файлы запуска командной оболочки Bash
Программа командной оболочки /bin/bash (далее просто — "командная оболочка") использует набор файлов запуска, которые помогают создать среду окружения. Каждый файл имеет конкретное назначение и может по разному влиять на то, как будет осуществляться вход в систему и каковы будут настройки интерактивной среды. В файлах, находящихся в директории /etc, обычно указываются глобальные настройки. Если эквивалентный файл существует в вашем домашнем директории, то в нем можно переопределять глобальные настройки
Интерактивная командная оболочка с регистрацией (login shell) запускается после успешного входа в систему; для этого используется команда /bin/login, читающая файл /etc/passwd. Когда происходит вызов командной оболочки, при ее запуске обычно читается файл /etc/profile и эквивалентный ему приватный файл ~/.bash_profile.
Интерактивная командная оболочка без регистрации (non-login shell) обычно вызывается из командной строки с помощью запуска программы командной оболочки (например, [prompt]$/bin/bash) или с помощью выполнения команды /bin/su. Интерактивную командную оболочку без регистрации можно также запустить в графической среде с помощью терминальных программ, таких как xterm или konsole. Этот тип вызова командной оболочки обычно копирует родительскую среду, а затем для получения дополнительных инструкций по настройке запуска командной оболочки читает пользовательский файл ~/.bashrc.
Неинтерактивная командная оболочка обычно используется в случае, когда используется скрипт командной оболочки. Она не является интерактивной, поскольку обрабатывается скрипт и от пользователя между командами не ожидается ввод данных. При таких вызовах командной оболочки происходит наследование родительской среды окружения, в которой запускался скрипт.
Файл ~/.bash_logout не используется при вызове командной оболочки. Он считывается и исполняется, когда пользователь выходит из интерактивной командной оболочки, использующей регистрацию (login shell).
Во многих дистрибутивах для инициализации командных оболочек без регистрации (non-login shell) используется файл /etc/bashrc. Обычно обращение к этому файлу происходит из файла ~/.bashrc, расположенного в директории пользователя, и не осуществляется непосредственно из bash. Это соглашение используется в данном разделе.
Для получения дополнительной информации используйте команду info bash -- Nodes: Bash Startup Files and Interactive Shells (раздел "Файлы запуска Bash и интерактивные командные оболочки").
|
ЗамечаниеБольшинство инструкций, описываемых ниже, используются для создания файлов, которые помещаются в каталог |
Файл /etc/profile
Ниже приведен базовый файл /etc/profile. Этот файл начинается с настройки некоторых вспомогательных функций и с задания некоторых базовых параметров. В нем указаны некоторые параметры истории использования команды bash и, в целях безопасности, отключена для пользователя root постоянная поддержка файла history. В нем также заданы значения строк приглашения, используемых пользователем по умолчанию. Затем происходит обращение к небольшим однократно используемым скриптам, находящимся в директории /etc/profile.d, с помощью которых выполняется большая часть инициализационной работы.
Чтобы получить дополнительную информацию об управляющих последовательностах символов, которые вы можете использовать в своих строках-приглашениях (т. е. в переменной среды окружения PS1), запустите команду info bash -- Node: Printing a Prompt (раздел "Выдача строк-приглашений").
cat > /etc/profile << "EOF"
# Начало файлаn /etc/profile
# Написано для проекта Beyond Linux From Scratch
# Автор - James Robertson <jameswrobertson@earthlink.net>
# Изменения - Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
# Общесистемные переменные среды окружения и программы запуска.
# Общесистемные алиасы и функции должны быть в файле /etc/bashrc. Персональные
# переменные среды окружения и персональные программы запуска должны быть помещены в файл
# ~/.bash_profile. Персональные алиасы и функции должны быть в файле
# ~/.bashrc.
# Функции, которые помогут вам управлять путями. Второй аргумент является именем
# переменной, определяющей путь, который должен быть изменен (по умолчанию: PATH)
pathremove () {
local IFS=':'
local NEWPATH
local DIR
local PATHVARIABLE=${2:-PATH}
for DIR in ${!PATHVARIABLE} ; do
if [ "$DIR" != "$1" ] ; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
export $PATHVARIABLE="$NEWPATH"
}
pathprepend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
# Set the initial path
export PATH=/bin:/usr/bin
if [ $EUID -eq 0 ] ; then
pathappend /sbin:/usr/sbin
unset HISTFILE
fi
# Настройка некоторых переменных среды окружения.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
# Настройка командной строки красного цвета в случае пользователя root и зеленого цвета - для других пользователей.
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
# Теперь очистите переменные pathremove pathprepend pathappend
# Конец файла /etc/profile
EOF
Каталог /etc/profile.d
Теперь создайте каталог /etc/profile.d, где будут находиться отдельные скрипты инициализации:
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
Скрипт /etc/profile.d/dircolors.sh
Этот скрипт использует файлы ~/.dircolors и /etc/dircolors для управления цветами имен файлов, перечисляемых в директории. С их помощью осуществляется управление цветом элементов, выдаваемых в выходном потоке, например, с помощью команды ls --color. О том, как инициализовать эти файлы, рассказывается в конце настоящего раздела.
cat > /etc/profile.d/dircolors.sh << "EOF"
# Setup for /bin/ls to support color, the alias is in /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
eval $(dircolors -b /etc/dircolors)
if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi
fi
alias ls='ls --color=auto'
EOF
Скрипт /etc/profile.d/extrapaths.sh
Этот скрипт добавляет несколько полезных путей в переменные среды окружения PATH и PKG_CONFIG_PATH. Если желаете, вы можете раскомментировать последний раздел скрипта и скрипт добавит точку к значению вашего пути. Это позволит вам запускать в текущем рабочем директории исполняемые файлы и не указывать ./, но вы должны знать, что это небезопасно с точки зрения обеспечения безопасности.
cat > /etc/profile.d/extrapaths.sh << "EOF"
if [ -d /usr/local/lib/pkgconfig ] ; then
pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
fi
if [ -d /usr/local/bin ]; then
pathprepend /usr/local/bin
fi
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
pathprepend /usr/local/sbin
fi
if [ -d ~/bin ]; then
pathprepend ~/bin
fi
#if [ $EUID -gt 99 ]; then
# pathappend .
#fi
EOF
Скрипт /etc/profile.d/readline.sh
С помощью этого скрипта настраивается файл inputrc, используемый по умолчанию. Если у пользователя нет индивидуальных настроек, скрипт будет использовать этот глобальный файл.
cat > /etc/profile.d/readline.sh << "EOF"
# Setup the INPUTRC environment variable.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
Скрипт /etc/profile.d/umask.sh
Настройка значения umask важна с целью обеспечения безопасности. В нем определяется, что по умолчанию для системных пользователей запись в группе запрещена, если имя пользователя и имя группы не совпадают.
cat > /etc/profile.d/umask.sh << "EOF" # By default we want the umask to get set. if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then umask 002 else umask 022 fi EOF
Скрипт /etc/profile.d/X.sh
Если установлена система X, то также будут обновлены переменные PATH и PKG_CONFIG_PATH.
cat > /etc/profile.d/X.sh << "EOF"
if [ -x /usr/X11R6/bin/X ]; then
pathappend /usr/X11R6/bin
fi
if [ -d /usr/X11R6/lib/pkgconfig ] ; then
pathappend /usr/X11R6/lib/pkgconfig PKG_CONFIG_PATH
fi
EOF
Скрипт /etc/profile.d/i18n.sh
Этот скрипт настраивает переменную среды окружения, используемую для поддержки естественного языка. Подробное обсуждение настройки этой переменной можно найти в книге LFS в разделе "Файлы запуска командной оболочки Bash".
cat > /etc/profile.d/i18n.sh << "EOF" # Set up i18n variables export LANG=<ll>_<CC>.<charmap><@modifiers> EOF
Инициализация других значений
В профиль profile можно легко добавить инициализацию других значений, если в каталог /etc/profile.d поместить соответствующие скрипты.
Файл /etc/bashrc
Ниже приведен базовый файл /etc/bashrc. В скрипте объявляется алиас команды ls, позволяющий выдавать раскрашенное содержимое текущего каталога. Также определено значение переменной среды окружения PS1, с помощью которой определяется внешний вид пользовательской строки — приглашения.
cat > /etc/bashrc << "EOF" # Начало файла /etc/bashrc # Написано для Beyond Linux From Scratch # Автор - James Robertson <jameswrobertson@earthlink.net> # изменено Bruce Dubbs <bdubbs@linuxfromscratch.org> # Общесистемные переменные среды окружения и программы запуска. # Общесистемные алиасы и функции должны быть в файле /etc/bashrc. Персональные # переменные среды окружения и персональные программы запуска должны быть помещены в файл # ~/.bash_profile. Персональные алиасы и функции должны быть в файле # ~/.bashrc. # Предоставляются команды /bin/ls, используемые цвет. Используется в совокупности с кодом в файле # /etc/profile. alias ls='ls --color=auto' # Предоставляется подсказка в командных оболочках без входа в систему, в частности запускаемые # в среде X. [Смотрите архив LFS с именем PS1 Environment Variable # с тем, чтобы лучше ознакомиться со скриптом] NORMAL="\[\e[0m\]" RED="\[\e[1;31m\]" GREEN="\[\e[1;32m\]" if [[ $EUID == 0 ]] ; then PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL" else PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL" fi # Конеч файла /etc/bashrc EOF
Файл ~/.bash_profile
Ниже приведен базовый файл ~/.bash_profile. Если вы хотите, чтобы для каждого нового пользователя этот файл создавался автоматически, просто перенаправьте выходной поток команды в файл /etc/skel/.bash_profile и после выполнения команды проверьте права доступа к созданному файлу. После этого вы можете скопировать файл /etc/skel/.bash_profile в домашние директории уже существующих пользователей, в том числе и пользователя root, а затем задать владельца и группу.
cat > ~/.bash_profile << "EOF"
# Начало файла ~/.bash_profile
# Написано для Beyond Linux From Scratch
# Автор - James Robertson <jameswrobertson@earthlink.net>
# Изменение - Bruce Dubbs <bdubbs@linuxfromscratch.org>
# Персональные переменные среды окружения и программы запуска.
# Персональные алиасы и функции должны находиться в файле ~/.bashrc. Общесистеные
# переменные среды окуружения и программы запуска находятся в файле /etc/profile.
# Общесистемные алиасы и функции находятся в файле /etc/bashrc.
append () {
# First remove the directory
local IFS=':'
local NEWPATH
for DIR in $PATH; do
if [ "$DIR" != "$1" ]; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
# Then append the directory
export PATH=$NEWPATH:$1
}
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
if [ -d "$HOME/bin" ] ; then
append $HOME/bin
fi
unset append
# Конец файла ~/.bash_profile
EOF
Файл ~/.bashrc
Ниже приведен базовый файл ~/.bashrc. Комментарии и инструкции по использованию каталога /etc/skel для файла .bash_profile, приведенные выше, справедливы и для этого файла. Отличия только в именах создаваемых файлов.
cat > ~/.bashrc << "EOF" # Начало файла ~/.bashrc # Написано для Beyond Linux From Scratch # Автоор - James Robertson <jameswrobertson@earthlink.net> # Персональные алиасы и функции. # Персональные переменные среды окружения и программы запуска должны быть # в файле ~/.bash_profile. Общесистемные переменные среды окружения и программы # запуска находятся в файле /etc/profile. Общесистемные алиасы и функции находятся # в файле /etc/bashrc. if [ -f "/etc/bashrc" ] ; then source /etc/bashrc fi # конец файла ~/.bashrc EOF
Файл ~/.bash_logout
Это пустой файл ~/.bash_logout, которым можно пользоваться в качестве шаблона. Обратите внимание, что в файле ~/.bash_logout не указана команда clear. Это связано с тем, что эта команда находится в файле /etc/issue.
cat > ~/.bash_logout << "EOF" # Начало файла ~/.bash_logout # Написано для для Beyond Linux From Scratch # Автор - James Robertson <jameswrobertson@earthlink.net> # Персональные элементы, которые выполняются при выходе из системы. # Конец файла ~/.bash_logout EOF
/etc/dircolors
Если вы хотите пользоваться возможностью dircolors ( различные цвета для различных компонентов содержимого текущего каталога — прим. пер.), запустите следующую команду. Также можно воспользоваться директорием /etc/skel, работа с которым была описана выше с тем, чтобы для каждого нового пользователя создавался файл ~/.dircolors. Как и в предыдущем случае, просто в следующей команде измените имя создаваемого файла и обеспечьте, чтобы права доступа, владелец и группа позволяли создавать файлы и их копировать.
dircolors -p > /etc/dircolors
Вы можете отредактировать файл /etc/dircolors, если хотите настроить цвета, которые будут использоваться для отображения различных типов файлов, Инструкции по настройке цветов есть в самом файле.
Наконец, Яном Макдональдом (Ian Macdonald) была представлена прекрасная подборка рекомендаций и советов, касающихся среды окружения вашей командной оболочки. Вы можете познакомиться с ними по ссылке http://www.caliban.org/bash/index.shtml.
Перевод сделан с варианта оригинала, датированного 2009-06-27 10:10:28 +0000
| Предыдущий раздел: | Оглавление | Следующий раздел: |
| Об устройствах | Файлы /etc/vimrc и ~/.vimrc |

