Настройка и работа в Linux
adb5321d

Переменные shell


$CDPATH
Это малоизвестная и часто недооцениваемая переменная shell. CDPATH выполняет те же действия для встроенной команды cd, что и PATH для исполняемых файлов. Мудро установив ее значение, вы можете сократить количество нажатий клавиш в день.

Попробуйте это:
$ export CDPATH=.:~:~/docs:/mnt:/usr/src/redhat/RPMS:/usr/src:/usr/lib:/usr/local:

После использования вышеуказанной команды, cd i386 вероятно переместит вас в /usr/src/redhat/RPMS/i386 в Linux-системе на основе Red Hat.

$HISTIGNORE
Установите значение этой переменной во избежание попадания в историю команд подряд идущих одинаковых команд и другой не слишком полезной информации. Это сократит бесконечные нажатия клавиши «стрелка вверх» для получения команды, которая находится до команды, введенной вами 20 раз. Это также позволит избежать заполнения большей части истории команд ненужными записями.

Попробуйте это:
$ export HISTIGNORE="&:ls:ls *:mutt:[bf]g:exit"

После использования вышеуказанной команды, повторяющиеся команды, вызовы ls, запуски почтового клиента mutt без каких-либо дополнительных параметров, плюс вызовы встроенных команд bg, fg и exit не попадут в историю команд.

$MAILPATH
bash сообщит вам о новой почте в любом каталоге, указанном в переменной MAILPATH. Это очень полезно если вы пользуйтесь утилитами типа procmail для сортировки вашей почты по каталогам.

Попробуйте добавить следующие команды к вашему ~/.bash_profile, чтобы получать уведомления о появлении новой почты в любом ящике в ~/Mail.

MAILPATH=/var/spool/mail/$USER for i in `echo ~/Mail/[^.]*` do MAILPATH=$MAILPATH:$i done export MAILPATH unset i

Если вы используете mutt и во многие из каталогов не попадает автоматически отфильтрованная почта, вы можете выбрать только те, куда попадает новая почта, также просматриваемые mutt.

В это случае, попробуйте что-нибудь похожее на нижеследующее в своем ~/.bash_profile:
export `perl -ne 's/^mailboxes /MAILPATH=/ && tr/ /:/ && print && exit' < ~/.muttrc`


$TMOUT
Если вы установите эту переменную в значение больше нуля, bash завершит свою работу по истечении указанного количества секунд, если в течении этого времени не будет ничего введено.

Эти установки полезны при работе под root для уменьшения риска безопасности в тех случаях, когда кто-то забывает выйти из системы, работая как суперпользователь.

Опции set
ignoreeof
Обычно, нажатие Ctrl-D в командной строке выкинет вас из командного интерпретатора. Это может раздражать, если вам регулярно необходимо набирать Ctrl-D в других ситуациях, например для завершения Telnet-сессии. В такой ситуации слишком частое нажатие Ctrl-D закроет ваш shell, что может очень вас расстроить. Это опция делает невозможным использование Ctrl-D для выхода из shell.

Опции shopt
Вы можете установить все нижеуказанные опции, введя shopt -s <опция>.
  cdspell
Данная опция исправляет незначительные синтаксические ошибки в вызове команды cd, в этом случае переставленные местами символы, пропущенные и лишние символы будут исправлены без перепечатывания.
  cmdhist Использование данной опции - дело вкуса. Указание данной опции заставит bash записывать многострочные команды в историю как однострочные. Это сделано для упрощения редактирования команд.
  dotglob
Эта опция позволяет файлам, чьи имена начинаются с точки ('.'), быть возвращенными в результате раскрытия имени пути ( при использовании символов *,?, [] в командах - прим. переводчика ).
  extglob

Эта опция позволяет вам использовать расширенный поиск по шаблону в стиле команды egrep ksh-88 или, другими словами, сверх-развитый поиск по шаблону в bash. Доступные операторы:

?(шаблон)
Соответствует количеству появлений указанного шаблона, равному нулю или единице
*(шаблон)
Соответствует количеству появлений указанного шаблона, равному нулю или больше
+(шаблон)
Соответствует одному или большему количеству появлений указанного шаблона
@(шаблон)
Соответствует одному появлению указанного шаблона
!(шаблон)
Соответствует всему, кроме одного появления указанного шаблона

Вот пример. Скажем, вы хотите установить все RPM-файлы в указанном каталоге, кроме тех, которые собраны для архитектуры noarch. Вы можете использовать что-нибудь типа этого:

rpm -Uvh /usr/src/RPMS/!(*noarch*)

Эти выражения могут быть также сгруппированы, тогда, если вы хотите вывести список всех не-PDF и не-Postscript файлов в текущем каталоге, вы можете сделать так:

ls -lad !(*.p?(df|s))


Содержание раздела