Причины, по которым существуют два различных типа файлов запуска, заключаются в том, что в давние времена пользователи входили в систему через традиционный терминал с оболочкой для входа в систему, после чего запускали подоболочки не для входа с системами управления окнами или экранной программой. По поводу подоболочек не для входа в систему было решено, что повторяющаяся настройка среды пользователя и запуск набора команд, которые уже запущены, являются расточительством. В оболочках для входа в систему можно было бы запускать замысловатые команды запуска из таких файлов, как .bash_profile, оставив только псевдонимы и другие «легковесные» вещи файлу .bashrc.
В наши дни большинство пользователей входит в систему через графические менеджеры дисплея (из следующей главы вы узнаете об этом подробнее). Многие из них начинают работу с одной неинтерактивной оболочки для входа в систему, чтобы сохранить описанную выше модель «для входа — не для входа». Если они этого не делают, вам придется полностью настроить окружение (путь, путь к страницам руководства и т. п.) в файле .bashrc, а иначе вы не увидите ничего из вашего окружения в терминальном окне оболочек. Кроме того, вам потребуется также файл .bash_profile, если вы желаете войти в консоль или удаленно, поскольку такие оболочки для входа даже не беспокоятся о файле .bashrc.
Пример файла .bashrc
Чтобы удовлетворить оба типа оболочек, каким образом создавать файл .bashrc, который можно было бы использовать и в качестве файла .bash_profile? Приведу один весьма элементарный (и в то же время совершенно достаточный) пример:
# Command path.
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games
PATH=$HOME/bin:$PATH
# PS1 is the regular prompt.
# Substitutions include:
# \u username \h hostname \w current directory
# \! history number \s shell name \$ $ if regular user
PS1='\u\$ '
# EDITOR and VISUAL determine the editor that programs such as less
# and mail clients invoke when asked to edit a file.
EDITOR=vi
VISUAL=vi
# PAGER is the default text file viewer for programs such as man.
PAGER=less
# These are some handy options for less.
# A different style is LESS=FRX
# (F=quit at end, R=show raw characters, X=don't use alt screen)
LESS=meiX
# You must export environment variables.
export PATH EDITOR VISUAL PAGER LESS
# By default, give other users read-only access to most new files.
umask 022
Как описано ранее, можно использовать такой файл .bashrc в качестве файла .bash_profile с помощью символической ссылки. Можно также сделать эту связь еще четче, создав файл .bash_profile, как в этой однострочной команде:
. $HOME/.bashrc
Проверка того, является ли оболочка интерактивной
Если файл .bashrc соответствует файлу .bash_profile, то обычно не приходится запускать дополнительные команды для оболочек входа в систему. Однако, если вы желаете назначить различные действия для разных типов оболочек, можно добавить следующую проверку в файл .bashrc, которая отслеживает наличие символа i в переменной оболочки $-:
case $- in
*i*) # interactive commands go here
—snip—
;;
*) # non-interactive commands go here
—snip-
;;
esac
13.4.2. Оболочка tcsh
Стандартным вариантом оболочки csh практически во всех системах Linux является оболочка tsch, улучшенная C-оболочка, которая сделала популярными такие функции, как редактирование командной строки и многорежимное завершение имен файлов и команд. Даже если вы не используете оболочку tsch как оболочку по умолчанию для нового пользователя (мы рекомендуем применять оболочку bash), наличие файлов запуска для нее все же необходимо на тот случай, если пользователь натолкнется на нее.
В оболочке tsch вам не надо беспокоиться о различиях между оболочками для входа/не для входа в систему. Во время запуска оболочка tsch ищет файл .tcshrc. Если это не удается, она ищет файл запуска .cshrc оболочки csh. Причина такого порядка действий в том, что файл .tcshrc можно использовать для таких расширений оболочки tcsh, которые не работают в оболочке csh. Вам, возможно, стоит придерживаться обычного файла .cshrc вместо .tcshrc; весьма маловероятно, что кому-либо понадобится применить ваши файлы запуска для оболочки csh. Если какой-либо пользователь действительно встретит оболочку csh в другой системе, ваш файл .cshrc будет работать.
Пример файла.cshrc
Приведу пример файла .cshrc:
# Command path.
setenv PATH /usr/local/bin:/usr/bin:/bin:$HOME/bin
# EDITOR and VISUAL determine the editor that programs such as less
# and mail clients invoke when asked to edit a file.
setenv EDITOR vi
setenv VISUAL vi
# PAGER is the default text file viewer for programs such as man.
setenv PAGER less
# These are some handy options for less.
setenv LESS meiX
# By default, give other users read-only access to most new files.
umask 022
# Customize the prompt.
# Substitutions include:
# %n username %m hostname %/ current directory
# %h history number %l current terminal %% %
set prompt="%m%% "