При работе с FreeBSD, в большинстве случаях для выполнения повседневных задач
используется командный интерфейс (так называемая ``оболочка'', ``shell''). Основная
задача интерпретатора -- принимать вводимые команды и выполнять их. Многие командные
интерпретаторы имеют встроенные средства для выполнения повседневной работы, например,
операции над файлами и каталогами, редактирование командной строки, командные макросы и
переменные окружения. Вместе с FreeBSD поставляется несколько командных интерпретаторов,
например, sh, или Bourne Shell, и tcsh,
расширенная версия C-shell. Многие другие интерпретаторы доступны из коллекции портов
FreeBSD, например zsh и bash.
Какой из командных интерпретаторов использовать? Это дело вкуса. Если вы
программируете на C, то вам, возможно, понравится tcsh. Если вы
работали с Linux, или только начинаете работать с интерфейсом командной строки UNIX®, попробуйте bash. Каждый из
названных интерпретаторов имеет свои особенности, которые отличат его от других, и,
возможно, повлияют на ваш выбор.
Одна из наиболее часто используемых функций командного интерпретатора - дополнение
частичного имени файла до полного. Вы можете набрать только первые несколько символов
имени файла, нажать клавишу табуляции (TAB), и командный интерпретатор автоматически
завершит имя. Например, у нас есть два файла, названные foobar
и foo.bar. Допустим, мы хотим удалить файл foo.bar. Для этого, наберем на клавиатуре rm
fo[Tab].[Tab].
Вы увидите следующее: rm foo[BEEP].bar.
Здесь [BEEP] - это так называемый консольный сигнал, оповещающий о том, что
интерпретатор не в состоянии закончить имя файла, так как по введенным вами символам
невозможно однозначно идентифицировать файл. Например, имена файлов foobar и foo.bar оба начинаются с fo, но после нажатия TAB можно однозначно дополнить только до foo. Если же теперь ввести точку (.) и
вновь нажать TAB, интерпретатор достроит имя файла целиком.
Дополнительные возможности при работе с интерпретатором дает использование переменных
окружения. Переменные окружения это пары переменная=значение, хранящиеся в памяти
интерпретатора. Значение переменных окружения может быть прочитано любой программой,
запущенной из командного интерпретатора, и часто содержит настройки для многих приложений
и утилит. Ниже приведены некоторые наиболее часто встречающиеся переменные окружения и их
значения:
Установка значений переменных окружения различна для разных оболочек. Например, в
интерпретаторах C-стиля, таких как tcsh и csh, это setenv. В интерпретаторах Bourne,
таких как sh и bash, это export. Например, чтобы установить или изменить значение переменной
EDITOR к значению /usr/local/bin/emacs в
csh или tcsh, выполните команду:
% setenv EDITOR /usr/local/bin/emacs
В оболочках Bourne:
% export EDITOR="/usr/local/bin/emacs"
Чтобы получить значение переменной, например, в командной строке, поместите символ
$ перед именем переменной. Например, команда echo $TERM выведет значение переменной $TERM.
Командный интерпретатор воспринимает некоторые символы, называемые метасимволами, в
качестве управляющих. Один из наиболее часто используемых - символ *, который заменяет любое количество символов в имени файла.
Метасимволы используются для поиска файлов по маске, например, команда echo * делает практически тоже самое, что и команда ls, поскольку интерпретатор вызывает команду echo, передавая ей имена всех файлов, попадающих под маску *.
В некоторых ситуациях требуется, чтобы интерпретатор воспринимал метасимволы как
обычные, не несущие специальной смысловой нагрузки. Этого можно достичь, поставив перед
символом обратную косую черту (\). Например, команда echo $TERM выведет тип вашего терминала, в то же время команда echo \$TERM выведет именно слово $TERM, а
не значение переменной $TERM.
Самым простым способом, пожалуй, будет воспользоваться командой chsh. Если переменная EDITOR определена, то
будет загружен соответствующий текстовый редактор, иначе vi. Вам нужно будет изменить
значение поля ``Shell:'' и выйти из редактора с сохранением результатов.
Можно также воспользоваться опцией -s команды chsh. Например, если вы хотите изменить интерпретатор на bash, выполните:
% chsh -s /usr/local/bin/bash
Также можно запустить chsh без параметров и изменить
интерпретатор по умолчанию в редакторе.
Замечание: Интерпретатор, который вы будете использовать, обязательно должен быть в файле /etc/shells. Обычно, при установке интерпретаторов из коллекции портов, это делается автоматически. Если же это не так,
вам нужно будет самостоятельно добавить соответствующую строчку в этот файл.
Например, если вы установили bash вручную и поместили его в
каталог /usr/local/bin, нужно набрать:
# echo "/usr/local/bin/bash" >> /etc/shells
Теперь можно смело использовать команду chsh.