![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Программа-оболочка /bin/bash (в дальнейшем
называемая просто "оболочка") использует набор стартовых файлов
для помощи в создании окружения. Каждый файл имеет специфическое
использование. Файлы в каталоге /etc обычно
предоставляют глобальные установки. Если аналогичные файлы присутствуют в
Вашем домашнем каталоге, то они могут заменить глобальные установки. Интерактивная регистрация оболочки запускается после успешного входа,
используя /bin/login, который читает файл
/etc/passwd. Эта оболочка во время загрузки читает
/etc/profile и его персональный эквивалент
~/.bash_profile. Интерактивнвя нерегистрированная оболочка запускается из командной строки
(то есть [prompt]$
/bin/bash) или командой /bin/su
. Интерактивнвя нерегистрированная оболочка
также запускается вместе с программами терминалов, такими как
xterm или
konsole в графической среде.
Этот тип оболочек копирует основное окружение и затем читает пользовательский
файл ~/.bashrc для
дополнительных инструкций конфигурации. Неинтерактивная оболочка обычно присутствует при
загрузке стартовых скриптов. Она неинтерактивная потому, что она выполняет
скрипт и не ожидает ввода от пользователя между выполнением команд.
Для такой оболочки используется окружение только из основной оболочки. Файл ~/.bash_logout не используется
для вызова оболочки. Он читается и выполняется при появлении пользователя
после интерактивной регистрации. К стандартным файлам относится /etc/bashrc,
вызываемый из пользовательского ~/.bashrc для
системной инициализации нерегистрированных оболочек. Для большей информации смотрите info
bash: Ноды: Стартовые
файлы Bash и интерактивные оболочки. Здесь приведен базовый /etc/profile. Этот файл
запускается для установки некоторых помогающих функций и базовых параметров.
Он описывает некоторые параметры истории команд bash
и в целях безопасности убирает поддержку постоянного файла истории для
пользователя root. Он также устанавливает вид системного приглашения.
Затем он вызывает маленький скрипт в /etc/profile.d
для предоставления большей инициализации. Для большей информации по escape-последовательностям, которые Вы можете
использовать для системного приглашения (переменной окружения
PS1), обратитесь к
info bash: Нода:
Печать системного приглашения. Теперь создадим каталог /etc/profile.d,
в котором размещены индивидуальные скрипты инициализации. Этот скрипт использует файлы ~/.dircolors и
/etc/dircolors для управления цветом
файлов в листинге каталога. Они раскрашивают вывод таких команд, как
ls --color.
Разъяснение по инициализации этих файлов находится в конце этого раздела. Этот скрипт добавляет некоторые полезные пути к переменным окружения
PATH и PKG_CONFIG_PATH.
Если хотите, можете раскомментировать последний раздел для
размещения точки в конце Вашего пути. Это позволит исполняемым файлам в
текущем рабочем каталоге запускаться без указания ./, хотя я предупреждаю,
что обычно это связано с риском для безопасности. Этот скрипт настраивает файл конфигурации inputrc
. Если пользователь не имеет индивидуальных установок,
он использует глобальный файл. Некоторые приложения требуют описания установки TERM
для поддержки цвета. Установка значения umask
важна для безопасности. Здесь права доступа для записи группы по умолчанию
выключены для пользователей системы и когда имена пользователя и
группы не совпадают. Если X установлены, переменные
PATH и
PKG_CONFIG_PATH также обновляются. Этот скрипт показывает пример другого пути
установки системного приглашения. Обычная переменная PS1
дополнена PROMPT_COMMAND.
Если переменная установлена, значение PROMPT_COMMAND
выполняется как команда перед выводом каждого первичного приглашения. Этот скрипт показывает установку некоторых переменных окружения,
необходимых для поддержки различных языков. Правильная установка этих
переменных даст Вам: Ввывод программ, транслированный на Ваш язык.
Правильную классификацию символов в буквы, цифры и другие классы:
это необходимо для Bash
для работы в не-английских локалях. Правильный алфавитный порядок сортировки для Вашей страны. Правильный размер бумажной страницы. Правильный формат денег, значения времени и даты. Замените [ll] ниже на двухбуквенный
код для требуемого языка (то есть “ru”)
и [CC] на двухбуквенный код страны
(то есть “RU”).
Также может быть необходимо указание (это актуальная и
предпочтительная форма) кодировки символов (то есть “
koi8-r”) после точки (так что в результате
будет “ru_RU.koi8-r”).
Используйте следующую команду для большей информации: Список всех локалей, поддерживаемых Glibc,
может быть получен запуском следующей команды: Как только подходящие параметры локали будут определены, создайте файл
/etc/profile.d/i18n.sh: Переменная LC_ALL устанавливает одинаковое
значение для всех категорий локализации. Для лучшего контроля Вы можете
предпочесть установку значений индивидуально для всех категорий,
перечисленных в выводе команды locale
. Переменная G_FILENAME_ENCODING говорит таким
приложениям, как Glib и
GTK+,
что имена файлов находятся по умолчанию
в кодировке локали, а не в UTF-8, как
предполагалось по умолчанию. Другие инициализации могут быть легко добавлены в
profile добавлением дополнительных скриптов в каталог
/etc/profile.d. Это базовый /etc/bashrc.
Комментарии в файле должны все объяснить. Это базовый ~/.bash_profile. Если Вы хотите,
чтобы каждый новый пользователь имел этот файл автоматически, просто измените
вывод команды на /etc/skel/.bash_profile и
проверьте права доступа после выполнения команды. Затем можете скопировать
/etc/skel/.bash_profile в домашние каталоги уже
имеющихся пользователей, включаяя root, и установить
соответствующего владельца и группу. Это базовый ~/.bashrc. Комментарии и инструкции
по использованию /etc/skel для
.bash_profile, описанного выше, применимы и здесь
но с другим конечным именем файла. Это пустой файл ~/.bash_logout, который
может быть использован как временный. Заметьте, что базовый
~/.bash_logout не включает команду
clear. Это потому, что clear
поддерживается в файле /etc/issue. Если Вы хотите использовать возможности dircolors
, то выполните следующую команду. Шаги по установке
/etc/skel, описанные выше, также могут быть
использованы здесь для предоставления файла
~/.dircolors при установке нового пользователя. Как и раньше, просто
измените имя выходного файла в следующей команде и установите права доступа,
владельца и группу у созданных и/или скопированных файлов. Если желаете настроить цвета, используемые для различных типов файлов,
можете отредактировать файл /etc/dircolors.
Инструкции по установке цветов находятся внутри файла. И напоследок, Ian Macdonald написал превосходную коллекцию советов и
трюков для расширения окружения Вашей оболочки. Вы можете прочитать их на
http://www.caliban.org/bash/index.shtml. Последнее обновление 2005-01-16 09:56:15 -0700.
Beyond Linux From Scratch. Версия 6.0
Глава 3. Задачи последующей конфигурации
LFS
Стартовые файлы оболочки Bash
/etc/profile
cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
# Общесистемные переменные окружения и запускаемые программы.
# Общесистемные псевдонимы и функции должны быть в /etc/bashrc.
# Личные переменные окружения и запускаемые программы должны быть в
# ~/.bash_profile. Личные псевдонимы и функции должны быть в ~/.bashrc.
# Функции, помогающие в управлении путями.
# Вторым агрументом является имя
# переменной PATH для изменения (по умолчанию: 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"
}
# Установка начального пути
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"
#export PS1="[\u@\h \w]\\$ "
export PS1='\u@\h:\w\$ '
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
# Очистка
unset pathremove pathprepend pathappend
# End /etc/profile
EOF
Каталог /etc/profile.d
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
/etc/profile.d/dircolors.sh
cat > /etc/profile.d/dircolors.sh << "EOF"
# Настройки /bin/ls для поддержки цвета, псевдоним находится в /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
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
for directory in $(find /opt/*/lib/pkgconfig -type d 2>/dev/null); do
pathappend $directory PKG_CONFIG_PATH
done
for directory in $(find /opt/*/bin -type d 2>/dev/null); do
pathappend $directory
done
if [ -d ~/bin ]; then
pathprepend ~/bin
fi
#if [ $EUID -gt 99 ]; then
# pathappend .
#fi
EOF
/etc/profile.d/readline.sh
cat > /etc/profile.d/readline.sh << "EOF"
# Настройка переменной окружения INPUTRC.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
/etc/profile.d/tinker-term.sh
cat > /etc/profile.d/tinker-term.sh << "EOF"
# Это поправляет значение TERM для удовлетворения некоторых
# приложений и мы действительно можем отображать цвет в их окне.
if [ -n "$COLORTERM" ]; then
export TERM=xterm-color
fi
if [ "$TERM" = "xterm" ]; then
export TERM=xterm-color
fi
EOF
/etc/profile.d/umask.sh
cat > /etc/profile.d/umask.sh << "EOF"
# По умолчанию мы хотим получить установленный umask.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
umask 002
else
umask 022
fi
EOF
/etc/profile.d/X.sh
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/xterm-titlebars.sh
cat > /etc/profile.d/xterm-titlebars.sh << "EOF"
# Подстрока подтверждает, что это работает для "xterm" и "xterm-xfree86".
if [ "${TERM:0:5}" = "xterm" ]; then
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME} : ${PWD}\007"'
export PROMPT_COMMAND
fi
EOF
/etc/profile.d/i18n.sh
man 3 setlocale
locale -a
cat > /etc/profile.d/i18n.sh << "EOF"
# Настройка переменных i18n.
export LC_ALL=[ll]_[CC]
export LANG=[ll]_[CC]
export G_FILENAME_ENCODING=@locale
EOF
Другие значения инициализации
/etc/bashrc
cat > /etc/bashrc << "EOF"
# Begin /etc/bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# Убедимся, что терминал настроен правильно для каждой оболочки
if [ -f /etc/profile.d/tinker-term.sh ]; then
source /etc/profile.d/tinker-term.sh
fi
if [ -f /etc/profile.d/xterm-titlebars.sh ]; then
source /etc/profile.d/xterm-titlebars.sh
fi
# Общесистемные псевдонимы и функции.
# Общесистемные переменные окружения и запускаемые программы должны быть в
# /etc/profile. Личные переменные окружения и запускаемые программы
# должны быть в ~/.bash_profile. Личные псевдонимы и функции
# должны быть в ~/.bashrc.
# Предоставляет цветную команду /bin/ls. Используется совместно с кодом в
# /etc/profile.
alias ls='ls --color=auto'
# Предоставляет вид приглашения для нерегистрируемых оболочек, указанных
# оболочек, запускаемых в окружении X.
#export PS1="[\u@\h \w]\\$ "
export PS1='\u@\h:\w\$ '
# End /etc/bashrc
EOF
~/.bash_profile
cat > ~/.bash_profile << "EOF"
# Begin ~/.bash_profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# Личные переменные окружения и запускаемые программы.
# Личные псевдонимы и функции должны быть в ~/.bashrc. Общесистемные
# переменные окружения и запускаемые программы должны быть в /etc/profile.
# Общесистемные псевдонимы и функции в /etc/bashrc.
append () {
# Сначала удалим каталог.
local IFS=':'
local NEWPATH
for DIR in $PATH; do
if [ "$DIR" != "$1" ]; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
# Затем добавим каталог.
export PATH=$NEWPATH:$1
}
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
if [ -d "$HOME/bin" ] ; then
append $HOME/bin
fi
unset append
# End ~/.bash_profile
EOF
~/.bashrc
cat > ~/.bashrc << "EOF"
# Begin ~/.bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# Личные псевдонимы и функции.
# Личные переменные окружения и запускаемые программы должны быть в
# ~/.bash_profile. Общесистемные переменные окружения и запускаемые программы
# должны быть в /etc/profile. Общесистемные псевдонимы и функции
# находятся в /etc/bashrc.
if [ -f "/etc/bashrc" ] ; then
source /etc/bashrc
fi
# End ~/.bashrc
EOF
~/.bash_logout
cat > ~/.bash_logout << "EOF"
# Begin ~/.bash_logout
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# Личный пункт для выполнения logout.
# End ~/.bash_logout
EOF
/etc/dircolors
dircolors -p > /etc/dircolors
Найди своих коллег! |