При работе с FreeBSD, в большинстве случаев для выполнения
повседневных задач используется командный интерфейс (так называемая
<<оболочка>>, <<shell>>). Основная задача интерпретатора - принимать
вводимые команды и выполнять их. Многие командные интерпретаторы имеют
встроенные средства для выполнения повседневной работы, например,
операции над файлами и каталогами, редактирование командной строки,
командные макросы и переменные окружения. Вместе с FreeBSD
поставляется несколько командных интерпретаторов, например,
sh
, или Bourne Shell, и tcsh
,
расширенная версия C-shell. Многие другие интерпретаторы доступны из
коллекции портов FreeBSD, например zsh
и
bash
.
Какой из командных интерпретаторов использовать? Это дело вкуса.
Если вы программируете на C, то вам, возможно, понравится
tcsh
. Если вы работали с Linux, или только начинаете
работать с интерфейсом командной строки UNIX(R), попробуйте
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 | Каталоги, разделенные двоеточием, для поиска файлов системного справочника. |
Установка значений переменных окружения различна для разных
оболочек. Например, в интерпретаторах 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
Интерпретатор, который вы будете использовать,
обязательно должен быть в файле
/etc/shells
. Обычно, при установке
интерпретаторов из коллекции портов,
это делается автоматически. Если же это не так, вам нужно будет
самостоятельно добавить соответствующую строчку в этот файл.
Например, если вы установили bash
вручную и поместили его в
каталог /usr/local/bin
, нужно набрать:
#
echo "/usr/local/bin/bash" >> /etc/shells
Теперь можно смело использовать команду
chsh
.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.