Знакомство с Linux
13.Установка средыShell обеспечивает различные механизмы настройки вашей рабочей среды. Мы уже упоминали ранее, что shell больше, чем команда интерпретации - это также мощный язык программирования. Но обсуждение программирования на shell увело бы нас далеко в сторону, а мы бы хотели познакомить вас с некоторыми способами упрощения вашей работы в UNIX за счет использования некоторых дополнительных полезных свойств shell. Как мы упоминали ранее, различные оболочки используют
различный синтаксис для написания своих программ. Например, Tcsh
использует синтаксис, похожий на язык Си, в то время как shell
Баурна имеет другой синтаксис. В этом разделе мы не будем
заниматься их различиями, а рассмотрим примеры, используя
синтаксис shell Баурна
13.1 Сценарии shellПредположим, что вы часто используете серию команд и хотели бы сократить об'ем постоянной печати за счет группировки их в одну команду. Например, команды
об'единяют файлы, содержащие главы книги: Вместо введения каждый раз этих команд, вы можете собрать их в один сценарий (командный файл). Сценарии shell мы кратко опишем в Разделе 3.13.1. А сценарий, который выполнит вышеприведенные команды, будет выглядеть следующим образом
Если этот сценарий будет помещен в файл
которая выполнит все команды сценария. Сценарии shell - это
обычные текстовые файлы, которые вы можете создавать с помощью
редактора вроде Давайте посмотрим на этот сценарий. Первая строка
`` Вторая строка представляет из себя комментарий. Комментарии
начинаются символом `` Остальные строки сценария - обычные команды в том виде, в каком бы вы их вводили прямо на выполнение. Shell читает каждую строку сценария и выполняет эту строку, как будто вы ввели эту строку в ответ на подсказку shell. Права доступа важны для сценариев. Если вы создали сценарий,
вы должны убедиться, что вы имеете права на его выполнение.
чтобы дать самому себе разрешение на выполнение
shell-сценария 13.2 Перемещение shell и средаShell позволяет определять переменные, как и большинство
языков программирования. Переменная - это порция данных, которой
дано имя.
ВНИМАНИЕ! Имейте в виду, что Tcsh, также, как и C shell,
используют различные механизмы определения переменных,
отличающиеся от используемых здесь. Здесь обсуждается shell
Баурна. Когда вы присвоите значение переменной (используя
оператор ``
Переменной foo присвоено значение ``
дает тот же самый результат, что и
Эти переменные являются внутренними для shell. Это означает, что только shell имеет доступ к этим переменным. Это может быть полезно для сценариев; если вам надо сохранить информацию о имени файла, вы, например, можете поместить его в переменную. Команда set может показать вам перечень всех определенных переменных shell. Shell позволяет экспортировать переменные в среду. Среда -
это множество переменных, к которым могут иметь доступ
все выполняемые команды. Определив однажды переменную внутри shell
ВНИМАНИЕ! Здесь вновь есть отличие между Bash и Tcsh. При
использовании Tcsh используется другой сиснтаксис для помещения
переменных в среду (используется команда Среда очень важна в системах UNIX. Она позволяет конфигурировать некоторые команды за счет установки переменных, о которых знают команды. Вот небольшой пример. Переменная среды Присвойте
/home/larry# PAGER=cat Теперь экспортируйте
/home/larry# export PAGER Попробуйте команду Теперь, если присвоить
/home/larry# PAGER=more Обратим внимание на то, что нам не надо заново использовать
команду Страницы Руководства для конкретных команд содержат
информацию о том, использует ли команда какие-то переменные
среды. Например, Руководство по команде man говорит о том, что
для определения режима выдачи страницы руководства на экран
используется переменная Переменные среды используются также для сохранения важной информации
о процедуре входа. Например переменная
/home/larry/papers# echo $HOME /home/larry Другая интересная переменная среды -
/home/larry# PS1=``Your command, please: '' Your command, please: Для переустановки подсказки обратно в нормальное состояние
(когда она показывает текущий рабочий каталог, после
которого следует значек ``
Your command, please: PS1=``\w# '' /home/larry# В Руководстве 13.2.1 Переменная среды PATHКогда вы используете команду Например, ваша переменная
/bin:/usr/bin:/usr/local/bin:. Это список каталогов (в которых shell будет искать
команду), отделяемых друг от друга двоеточием `` Обратите внимание на то, что переменная
/home/larry# cp foo bar shell не использует Это экономит вам массу времени; это означает, что вы не
обязаны помнить, где находятся выполняемые файлы команд. Во
многих системах выполняемые файлы разбросаны во многих местах,
таких как Обратите внимание, что 13.3 Shell-Сценарии инициализацииВ дополнение к shell-сценариям, которые создаете вы, существует множество сценариев, которые использует сам shell для своих целей. Наиболее важными среди них являются сценарии инициализации, которые автоматически выполняются shell при вашем входе в систему. Сценарии инициализации сами по себе - это обычные сценарии,
как это описывалось выше. Но они очень полезны при установке
вышей среды путем автоматического выполнения набора команд при
вашем входе в систему. Например, если вы всегда используете
команду Как Bash, так и Tcsh делают различие между начальным shell
(вызываемым при входе в систему) и прочими вызовами shell.
Начальный shell вызывается в момент входа пользователя в систему;
часто это единственный экземпляр shell, который вы используете.
Но если вы вызываете shell из другой программы, такой как Файлы инициализации, используемые в Bash: Tcsh использует следующие сценарии инициализции:
Для того, чтобы лучше понять функции этих файлов, вам
следует больше узнать о shell. Программирование на shell сложный
вопрос, далеко выходящий за рамки этой книги. Дополнительную
информацию можно получить из Руководства на |
<<< | Оглавление | Страница: 13 | >>> |