Настройка bash
Настройка оболочки bash также призвана автоматизировать и упростить интерактивную работу в ней. Так, можно постоянно вводить вручную путь к каталогу, содержащему пользовательские сценарии, а можно, настроив должным образом переменные окружения, вызывать их, находясь в любом каталоге файловой системы. Или, как говорилось выше, вызывать команды типа rm , mv и т.д. с параметром, запрашивающим подтверждение для выполнения потенциально опасныхданных, а можно путем определения псевдонимов команд ( aliases ) предписать вывод такого подтверждения по умолчанию.
Поведение оболочки bash по умолчанию определяется двумя общесистемными конфигурационными файлами — /etc/bashrc и /etc/profile . Они создаются при установкеASPLinuxи содержат некий первоначальный набор настроек, подходящий для большинства пользовательских задач.
Кроме того, при создании учетной записи пользователя и назначения ему оболочки bash в качестве рабочей среды в его пользовательском каталоге создаются два файла аналогичного назначения — $HOME/.bashrc и $HOME/.bash_profile . Они запускаются сразу после общесистемных, файлами в сеансе конкретного пользователя. Именно ихредактированием достигаются индивидуальные настройки.
Иногда пользовательские конфигурационные файлы в домашнем каталоге могут отсутствовать, если, например, при создании учетной записи пользователя на стадии установки ASPLinux для него была определена другая оболочка, позднее вручную замененная на bash . В этом случае ихследует создать либо вручную, либо копированием из каталога /etc :
cp /etc/bashrc $HOME/.bashrc
и
cp /etc/profile $HOME/.bash_profile
либо просто командой cat :
cat > .bashrc
и
cat > .bash_profile
В последнем случае ихможно оставить пустыми, внося при необходимости только те опции, которые потребуется сделать отличными от общесистемных.
Следует обратить внимание на то, что пользовательские конфигурационные файлы начинаются с символа . (точка). Это общее правило, касающееся не только файлов конфигурации bash, но и почти любыхпрограмм. Точку в данном случае следует отличать от обозначения текущего каталога ( . или ./) — она означает, что файл с именем такой формы является скрытым (аналог атрибута hidden в MS DOS). Он не будет, в частности, отображаться командой Is по умолчанию.
Чтобы увидеть скрытые файлы в списке текущего каталога, команду эту следует дать в форме
ls -a
Назначение файлов .bashrc и .bash_profile различно. Первый считыва-ется один раз — при авторизации пользователя и первом запуске оболочки в сеансе. Файл .bash_profile перечитывается всякий раз, как запускается новый экземпляр программы bash, что происходит при исполнении некоторых программ или, например, при запуске окна терминала в X Window System. И потому не следует удивляться, что поведение оболочки bash может быть различным в разныхслучаях. Хотя ничто не запрещает сделать настройки обоих конфигурационныхфайлов идентичными.
В домашнем каталоге администратора (/root) также имеются индивидуальные файлы /root/.bashrc и /root/.bash_profile, настройки которых, как правило, отличаются и от общесистемных, и от прочих пользовательских. И потому если авторизоваться в системе как root, поведение оболочки bash будет иным, чем в сеансе обычного пользователя. Однако если последний получает временные привилегии администратора командой su, поведение bash по прежнему определяется его пользовательскими конфигурационными файлами, а не настройками суперпользователя.
В результате пользователь, получив права администратора командой su, иногда не в состоянии запустить некоторые программы, предназначенные для общесистемного конфигурирования. Это может вызвать недоумение, хотя объясняется очень просто: путь к файлам этой группы не определен в переменной окружения конфигурационного файла данного пользователя. И преодолевается еще проще — запуском команды с указанием полного пути (обычно команды такого рода собраны в каталоге /sbin), переопределением переменной окружения в данном сеансе или исправлением своего конфигурационного файла.
Впрочем, при необходимости доступа к окружению администратора в полном объеме, для получения его прав команду su следует использовать в форме
SU -1
(или просто su -). В этом случае происходит перечитывание файла начальной
конфигурации командной оболочки администратора.
Уяснив назначение конфигурационныхфайлов, можно приступить к ихредак-тированию.
Для этого потребуется любой текстовый редактор, например, описанные в этом руководстве консольные редакторы vi или joe , или редактор для среды KDE—kwrite . Обратим только внимание, что если выбранный редактор по умолчанию поддерживает перенос строк по достижению границы экрана или окна, эту опцию следует обязательно отключить: в результате принудительного разрыва строк файл может стать неработоспособным. Об этом следует всегда помнить при редактировании любыхфайлов конфигурации и скриптов.
Как правило, у пользователя возникает потребность в изменении двухгрупп настроек — переменныхокружения и псевдонимов команд.
Начнем с переменныхокружения. Через нихопределяются такие свойства оболочки, как тип терминала (переменная $TERM ), домашний каталог пользователя (переменная $HOME ) и многие другие. В Shell-совместимыхоболочках (в том числе и в bash ) любая переменная задается в одном из конфигураци-онныхфайлов bash таким образом:
ИМЯ_ПЕРЕМЕННОЙ=значение
Например, для смены типа используемого терминала на vt100 следует добавить
TERM=vt100
Большинство переменныхявляется внутренними (называемыми переменными оболочки), то есть доступными только для внутреннихее команд. Полный их список, который можно просмотреть командой set , включает многие десятки. Они используются главным образом при создании сценариев.
На поведение оболочки при интерактивной работе большее влияние оказывают переменные окружения ( shell environment ). Чтобы превратить переменную оболочки в переменную окружения, ее следует экспортировать, то есть сделать доступной для внешнихкоманд. Чтобы проделать это с переменной $TERM из приведенного примера, достаточно присоединить к ее определению выражение
export TERM=vt100
или добавить его отдельной строкой:
TERM=vtlOO export TERM
Обычно переменные окружения определяются в файле
$HOME/.bash_profile.
Просмотреть текущие ихзначения можно командой
echo $ИМЯ_ПЕРЕМЕННОЙ
Одной из важнейшихсреди переменных окружения является неоднократно упоминавшаяся ранее переменная $РАТН. Настало время остановиться на ней подробнее.
Переменная $РАТН задает список каталогов, просматриваемыхинтерпретатором оболочки при поиске команд, то есть исполняемыхбинарныхфайлов и сценариев. Текущее значение $РАТН можно определить командой:
echo $PATH
ответом на что будет сообщение вида
/usr/local/bin:/bin:/usr/bin:/usr/XHR6/bin:/usr:/home/username/bin
Это стандартный набор каталогов (значения, разделенные двоеточием) для исполняемыхфайлов, определяемый общесистемными настройками bash, за исключением последнего компонента, который определяется в файле $НОМЕ/.bash_profile следующим образом:
РАТН=$РАТН: $HOME/bin
то есть к общесистемному значению переменной $РАТН для любого пользователя присоединяется его персональный подкаталог bin в домашнем каталоге ($HOME/bin), что для конкретного пользователя username принимает форму /home/username/bin.
Если по тем или иным причинам файл $НОМЕ/.bash_profile не был создан одновременно с учетной записью, строку РАТН=$РАТН:$HOME/bin (или полное перечисление каталогов, как приведено выше) нужно внести в него вручную.
Далее, следует помнить, что командные интерпретаторы оболочек Linux, в том числе и bash, в отличие отC0MMAND.COM для MS DOS, не производят поиска исполняемыхфайлов в текущем каталоге сами по себе, что часто
обескураживает пользователя. Чтобы они делали это, текущий каталог должен быть явно (в форме ./) указан в переменной окружения $PATH . Однако, делать это не безопасно, так как может быть использовано для подмены си-стемныхутилит при взломе системы.
Наконец, в перечне каталогов $PATH отсутствуют каталоги для команд административного назначения (/sbin и /usr/sbin ). Если пользователю часто приходится обращаться к таким командам после получения временных прав суперпользователя, следует, как уже говорилось, пользоваться командой
su -
что предпочтительней прямой авторизации в качестве root . Можно также внести каталоги, содержащие административные команды, в $PATH , причем ранее всехпрочих. В результате соответствующая строка в $HOME/.bash_profile примет вид
PATH=/sbin:/usr/sbin:$PATH:$HOME/bin
а ответом на команду
echo $PATH
будет вывод на экран следующего перечня:
/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/alv/bin
Порядок перечисления каталогов в переменной $PATH имеет значение, так как при вводе любой команды интерпретатор bash ищет его слева направо, то есть, в приведенном примере, сначала в /sbin , потом в /usr/sbin и т.д., и лишь в последнюю очередь — в $HOME/bin . Поэтому если пользователь создал собственную команду, одноименную какой-либо системной из каталога /sbin и хочет в первую очередь использовать именно ее, следует позаботиться, чтобы в перечне каталогов $HOME/bin стояло раньше, чем /sbin .
Переменная $PATH , как и любая другая, заданная в форме PATH=...
остается пока внутренней переменной оболочки. Для превращения в переменную окружения ее нужно экспортировать. Если файл $HOME/.bash_profile был создан одновременно с учетной записью, это было сделано автоматически. Если нет — после строки PATH=... следует добавить
export PATH
Через переменные окружения можно настроить вид приглашения командной строки, что имеет не только декоративную, но и функциональную сторону: приглашение призвано помочь пользователю ориентироваться в его положении в структуре каталогов, отличать пользователей друг от друга и от администратора и т.д.
Так, принятая в bash по умолчанию форма
[username@localhost username]$
показывает имя пользователя, имя машины и имя текущего каталога, а также позволяет с первого взгляда отличить обычного пользователя ($) от администратора (#). Однако ее можно сделать еще более информативной, для чего используется переменная окружения $PS1. Так, если определить ее следующим образом:
PS1=’\u:\w=»'
в приглашении будет выводится имя пользователя (и) и полный путь до текущего каталога, начиная от домашнего (w, символ \ в обоихслучаяхуказывает, что следующий за ним символ — не просто алфавитный, а имеет специальное значение), а само приглашение приобретет вид
alv:~/cur/src=»
Кроме того, в приглашение можно ввести любую последовательность обычныхалфавитных символов, например, сообщение вида
alv:Введите команду~=»
что достигается строкой
PS1=’\и:Введите команду\до=»'
Разумеется, переменную $PS1 после настройки нужно экспортировать
export PS1
Кроме этого, пользователь может определить для себя и другие переменные окружения, такие, как системный редактор по умолчанию
EDITOR=joe export EDITOR
или программу постраничного просмотра
PAGER=more export PAGER
Не менее полезным, чем определение переменныхокружения, является задание псевдонимов ( aliases ) для некоторыхкоманд. Это обычно делается в файле $HOME/.bashrc следующим образом:
alias имя_псевдонима=’имя_команды [-опции]’
Имя псевдонима может совпадать с именем команды, опции которой задают условия ее выполнения. Ранее неоднократно говорилось, что во избежание непреднамеренной потери данныхкоманды типа rm , cp , mv лучше задавать с опцией -i , запрашивающей подтверждения потенциально опасныхдействий (например, при совпадении имен файлов и т.д.). Псевдонимы позволяют автоматизировать этот процесс, сделав такой запрос принудительным.
Для этого в файл $HOME/.bashrc вносятся строки:
alias rm=’rm -i’ alias cp=’cp -i’ alias mv=’mv -i’
то есть команды rm , cp , mv определяются как псевдонимы самихсебя, но с обязательной опцией -i , в результате чего предупреждающие сообщения будут выводиться всегда.
При уничтожении большого количества файлов и уверенности в правильности своихдействий псевдоним для rm (или любой другой команды) можно временно отключить командой:
unalias rm
а по завершении процедуры — восстановить:
alias rm=’rm -i’
Последняя команда может использоваться при интерактивной работе для временного определения псевдонимов.
Можно создавать имена псевдонимов, отличные от имен подменяемыхко-манд. Так, команда ls по умолчанию не выводит имена скрытыхфайлов (вида .имя_файла ), и в большинстве случаев это удобно. Однако при всякого рода настройкахвидеть скрытые файлы необходимо. И на этот случай можно определить псевдоним типа
alias la=’Is -а’
и внести его в $НОМЕ/.bashrc или использовать интерактивно.
Описанными примерами далеко не исчерпываются возможности настройки
bash.
Полную информацию по этому вопросу можно получить из экранной документации man bash.
Еще материалы по теме:
- Переключатель раскладки клавиатуры
- Установка и начальная настройка OpenOffice
- Настройка — Редактирование файла fstab
- Выбор и настройка виртуального сервера шаг за шагом.
- Смена разрешения экрана
- Разница между KDE и GNOME
