Первое знакомство с операционной системой UNIX, страница 5

Программы представляют собой внешние по отношению к оболочке команды. Команды, код которых находится в исполняемом файле оболочки, называются встроенными или внутренними. Наиболее важные из них — cd, set, unset, setenv, export. Первая команда предназначена для изменения текущего каталога. Каждая программа в ОС UNIX имеет свой текущий каталог. Следующие две команды предназначены для установки и отмены параметров самой оболочки. Выполнение этих действий также нельзя передать другим программам. Команды setenv и export изменяют «окружающую среду» как других программ, так и оболочки.

Если набранное пользователем имя команды является именем встроенной команды, она немедленно будет исполнена. Если же имя не совпадает с именами встроенных команд, оболочка выполняет поиск исполняемого файла программы с указанным именем.

Файлы в UNIX хранятся в каталогах. Каталоги могут содержаться в других каталогах, то есть быть вложенными. Имена каталогов отделяются друг от друга и от имен файлов символом / (slash). В именах файлов и каталогов могут содержаться любые символы, кроме косой черты. Имя текущего каталога ¾ «.», вышестоящего — «..». Имя главного, корневого каталога файловой системы UNIX ¾ /.

Каталоги, в которых оболочка ищет программу, перечислены в переменной окружения PATH. Программа должна находиться в одном из этих каталогов, иначе оболочка выведет сообщение о том, что команда не найдена.

Если программы нет в каталогах, перечисленных в пути поиска программ, для ее запуска следует указать абсолютное или относительное имя файла. Это имя обязательно содержит в себе косую черту. Если имя начинается с косой черты ¾ это абсолютное имя файла, например, /bin/ls, /bin/ps, /usr/ucb/ps. Если имя начинается с другого символа, это относительное имя файла, определяемое относительно текущего каталога. Часть имени до первой косой черты, если, конечно, косая черта входит в состав имени файла, должна быть именем каталога, расположенного в текущем каталоге. Для явного указания текущего каталога следует использовать точку: ./test — программа test из текущего каталога, ./bin/clean, и bin/clean — указывают на одну и ту же команду clean из каталога bin, находящегося в текущем каталоге. В составе имени файла можно использовать имя вышестоящего каталога: ../../programs/test.

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

Во второй версии оболочки bash список возможных имен выводится сразу после нажатия клавиши табуляции. Клавиша табуляции работает в любом месте строки, даже если после курсора имеются другие символы. В этом случае только символы, расположенные от начала слова до курсора, будут рассматриваться как начальные буквы имени файла. Символы, располагающиеся после курсора, не будут учитываться при наборе имени файла и будут отодвинуты в конец строки после дополнения имени до полного.

Функция автоматического дополнения имени действует и применительно к именам команд ОС UNIX. Если набрать первые буквы команды и нажать клавишу табуляции, имя команды будет дополнено, а если символов недостаточно, на экран выводятся все возможные имена команд.

Повторно вызвать ранее введенную команду можно либо клавишами управления курсором  и .

При завершении сессии введенные команды записываются в специальный файл, из которого они считываются интерпретатором в начале новой сессии. Таким образом, пользователь может повторно исполнять команды, использовавшиеся в прошлых сессиях.