Пользователи системы


Настройка командного интерпретатора



страница25/42
Дата01.12.2017
Размер5.38 Mb.
#654
ТипПрограмма
1   ...   21   22   23   24   25   26   27   28   ...   42

Настройка командного интерпретатора


Научившись (главным образом в результате чтения документации и непрестанных экспериментов) создавать работающие сценарии, Мефодий решил приступить к настройке командной оболочки, поскольку, как он слышал, для этого используются именно сценарии.

Привязка к клавишам


Оказалось, что настройка управляющих клавиш в bash не выглядит каксценарий, и даже имеет отношение не только к bash, а ко всемпрограммам, использующим библиотеку терминального ввода readline.Конфигурационный файл readline называется .inputrc и состоит, в основном, из команд вида "управляющая_последовательность": функция, гдеуправляющая_последовательность - это символы, при получении которыхreadline выполнит функцию работы с вводимой строкой. Список всех функций readline можно узнать у bash по команде bind -l, а список всехпривязок этих функций к клавиатурным последовательностям - по командеbind -p. Мефодий вписал в .inputrc такие две строки:

"\e[5~": backward-word

"\e[6~": forward-word

Пример 8.19. Настройка .inputrc (html, txt)

Упомянутые в примере функции позволяют перемещать курсор в командной строке по словам, а esc-последовательности возвращаются, соответственно, клавишами Page Up и Page Down виртуальной консоли Linux (сочетание "\e" означает в .Inputrc клавишу esc, то есть "^[", символ с ASCII-кодом 27).

К одной и той же функции readline можно привязать сколько угодно управляющих последовательностей: например, клавиша home делает то же, что и "^A", Стрелка вверх - то же, что и "^P", а Del - то же, что и "^D" (только не в пустой строке!). Таким образом отчасти решается проблема несовместимости управляющих последовательностей терминалов: если в каком-нибудь терминале другого типа Page Up или Page Down будут возвращать другие последовательности, Мефодий просто добавит в .inputrc еще одну пару команд. Правда, Гуревич советовал ему вовсе отказаться от редактирования .inputrc, а воспользоваться утилитой tput, которая обращается к переменной TERM и базе данных по терминалам terminfo и готова выдать верную для любого данного терминала информацию по kpp (key previous page) и knp (key next page). Выдачу tput можно "скормить" той жеbind, и получить команду, которая работает на любом терминале: bind "\"`tput kpp`\": backward-word"(кавычки, экранированные обратной косой чертой, \", передадутся bind в неизменном виде)

Стартовые сценарии


Настройка оболочки - это в первую очередь настройка окружения. В начале сеанса работы (при запускестартового командного интерпретатора) с помощью команды "." выполняется сценарий из файла со специальным именем - /etc/profile. Это - так называемый общесистемный профиль, стартовый сценарий, выполняющийся при входе в систему любого, кто использует командную оболочку, подобную sh. Следом выполняется персональный профиль (или просто профиль) пользователя - сценарий, находящийся в домашнем каталоге, и называющийся.profile. Этот сценарий пользователь может видоизменять, как ему заблагорассудится.

Что касается bash, то структура его стартовых файлов сложнее. Прежде всего, ~/.profile выполняется, только если в домашнем каталоге нет файла .bash_profile или .bash_login, иначе стартовый сценарий берется оттуда. В эти файлы можно помещать команды, несовместимые с другими версиями shell, например, управлениесокращениями или привязку функций к клавишам. Кроме того, каждый интерактивный (взаимодействующий с пользователем), но не стартовый bash выполняет системный и персональный конфигурационные сценарии/etc/bashrc и ~/.bashrc. Чтобы стартовый bash также выполнял ~/.bashrc, соответствующую команду необходимо вписать в ~/.bash_profile. Далее, каждый неинтерактивный (запущенный для выполнениясценария) bash сверяется с переменной окружения BASH_ENV и, если в этой переменной записано имя существующего файла, выполняет команды оттуда. Наконец, при завершении стартового bash выполняются команды из файла ~/.bash_logout.


Пример настроек


Ниже приведены примеры конфигурационных файлов, которые Мефодий, сам или с помощью Гуревича, разместил в домашнем каталоге.

PS1="\u@\h:\w \$ "

EDITOR="/usr/bin/vim"

export PS1 EDITOR

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

Пример 8.20. Пример файла .bash_profile (html, txt)

В этом файле вызывается ~/.bashrc (если он существует).

# User specific aliases and functions

if [ -r ~/.alias ]; then

. ~/.alias

fi

# Source global definitions



if [ -r /etc/bashrc ]; then

. /etc/bashrc

fi

Пример 8.21. Пример файла .bashrc (html, txt)

Мефодий решил, что сокращения удобнее будет хранить в отдельном файле - ~/.alias. Кроме того, вызываетсясценарий bashrc, который Мефодий обнаружил в каталоге /etc. Этот файл не входит в число автоматически выполняемых bash, поэтому его выполнение надо задавать явно:

alias > ~/.alias

Пример 8.22. Пример файла .bash_logout (html, txt)

Заметив, что команда alias выдает список сокращений в том же формате, в котором они и задаются, Мефодий придумал, как обойтись без редактирования файла ~/.alias. Отныне все сокращения, определенные к моменту завершения сеанса работы, будут записываться обратно в .alias. Туда попадут и те сокращения, что были считаны во время выполнения .bashrc, и те, что впоследствии были определены вручную:

alias l='ls -FAC'

alias ls='ls --color=auto'

alias pd='pushd'

alias pp='popd'

alias v='ls -ali'

alias vi='/usr/bin/vim'



Пример 8.23. Пример файла .alias (html, txt)

Последняя запись в файле .alias относится к инструменту, с помощью которого Мефодий создавал все эти файлы: текстовому редактору vim. О текстовых редакторах речь пойдет в следующей лекции.





Поделитесь с Вашими друзьями:
1   ...   21   22   23   24   25   26   27   28   ...   42




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница