Документация по ОС FreeBSD Среда, 24.04.2024, 00:08
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Shell [40]

Главная » Статьи » Программирование » Shell

Интерпретатор команд
При работе с 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.
Категория: Shell | Добавил: oleg (29.11.2007)
Просмотров: 2358 | Комментарии: 2 | Рейтинг: 0.0/0 |
Всего комментариев: 2
2 oleg  
0
Ну все верно, теперь можешь пользоваться bashом
А для изменения строки приглашения надо прописать в конфиге переменную PS1.
Например так:
PS1="\u@\w$ "

1 Dunyoyi  
0
После того как я набрал эти команды у меня выходит вот такая команда (-bash-2.05b#)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024