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