Главная » Программирование для UNIX » Настройка окружения UNIX

0

Одна из приятных особенностей системы UNIX заключается в том, что существует несколько способов  настраивать среду, приспосабливая ее к  своим  вкусам или  к соглашениям  локального  окружения.  Например,  ранее упоминалась проблема разных стандартов для символа забоя и символа удаления строки; по умолчанию это обычно  # и @. Каждый раз, когда это необходимо, можно заменить их

$ stty erase  e kill k

где e – это символ, выбранный для обозначения забоя, а k – для  удале ния строки. Но осуществлять эту операцию при каждом входе в систе му достаточно неудобно.

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

Первая  команда,  которую большинство  пользователей  помещают в свой .profile:

stty erase <–

Обозначение <– использовано для  наглядности, в .profile  же  можно поместить именно буквенное обозначение возврата на одну позицию. Команда stty воспринимает и такое представление, как, например, ^x для ctl-x, так что аналогичного эффекта можно добиться при помощи:

stty erase ‘^h’

потому что ctl-h  – это и есть возврат на одну позицию. (Символ ^ – это устаревший синоним для оператора |, образующего конвейер, поэтому следует заключать его в кавычки.)

Если  терминал не поддерживает переход по табуляции, можно добавить  –tabs в строку stty:

stty erase ‘^h’ –tabs

Для того чтобы  узнать о загруженности системы на момент входа, добавьте

who  | wc  –l

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

/usr/games/fortune

Через некоторое время может показаться, что вход в систему занимает слишком много времени, тогда сократите .profile до необходимого минимума.

Некоторые свойства оболочки определяются  так называемыми пере менными окружения, значения которых доступны пользователю и могут быть им изменены. Например, строка приглашения к вводу, выво димая как $, на самом  деле  хранится в переменной оболочки PS1, для  которой можно установить любое значение, например:

PS1=’Yes dear?  ‘

Кавычки необходимы, так  как в строке приглашения есть пробелы. А вот пробелы вокруг знака = в этой конструкции не разрешены.

Также оболочка особым  образом  интерпретирует переменные HOME  и MAIL. HOME  – это имя  домашнего каталога, обычно  оно устанавливается правильно и не требует записи в .profile. Переменная MAIL определяет название  стандартного файла, где  хранится почта. Если  определить его для оболочки, то уведомление о получении нового сообщения будет появляться после каждой команды:1

MAIL=/usr/spool/mail/you

1        Это плохо реализовано в оболочке. Просмотр файла после каждой команды ощутимо увеличивает нагрузку на систему. К тому же, если долго работать в редакторе, уведомления о новых сообщениях не будут поступать, так как команды в оболочке при  этом не запускаются. Лучше просматривать файл не после  каждой команды, а каждые несколько минут. Реализация такой программы, проверяющей почту, обсуждается в главах 5 и 7.  Третья возможность (правда, доступная не каждому) – это получение уведомлений от самой программы mail:  она-то  уж наверняка знает, когда приходит новое письмо.

(У файла почты может быть  и другое  имя; /usr/mail/you также очень  распространено.)

Вероятно, самой  используемой переменной окружения является та переменная, которая определяет, где оболочка ищет команды. Вспомните, что при поиске введенной команды оболочка сначала просматривает текущий каталог, потом  каталог /bin и затем /usr/bin. Эта последовательность каталогов называется  путем поиска и хранится в пере менной окружения PATH. Если  вас не устраивает значение пути  поиска по умолчанию, можно изменить его, опять-таки в файле .profile. Например, добавим к стандартному пути  еще /usr/games:

PATH=.:/bin:/usr/bin:/usr/games                 Один  из способов  

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

Еще один способ установить PATH для примера, приведенного выше, состоит в том, чтобы просто увеличить предыдущее значение переменной:

PATH=$PATH:/usr/games                                  …    Другой способ

Значение любой  переменной окружения можно получить, если  пред варить ее имя  символом $. В только что рассмотренном примере выражение $PATH извлекает текущее значение, к которому добавляется новая  часть, и результат снова  присваивается переменной PATH. Можно проверить это при помощи программы echo:

$ echo PATH  is $PATH

PATH  is :/bin:/usr/bin:/usr/games

$ echo $HOME                                              Регистрационный каталог

/usr/you

$

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

PATH=:$HOME/bin:/bin:/usr/bin:/usr/games

О создании собственных программ поговорим в главе 3.

Еще  одна переменная, часто  применяемая более замысловатыми, чем ed,  текстовыми  редакторами, –  это  TERM,  которая определяет  тип используемого терминала. Такая  информация  может  позволить программе более эффективно распоряжаться экраном. Поэтому можно добавить, например

TERM=adm3

в файл .profile.

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

d=/horribly/long/directory/name

в свой .profile, тогда можно будет говорить просто

$ cd $d

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

В заключение необходимо сообщить оболочке, что переменные должны использоваться и в других программах; это реализуется командой export, о которой будет рассказано в главе 3.

export  MAIL   PATH  TERM

В итоге типичный файл .profile может выглядеть так:

$ cat  .profile

stty erase ‘^h’  –tabs MAIL=/usr/spool/mail/you PATH=:$HOME/bin:/bin:/usr/bin:/usr/games TERM=adm3

b=$HOME/book

export  MAIL  PATH  TERM  b date

who  | wc  –l

$

Мы рассмотрели далеко не все возможности, предоставляемые оболоч кой. Одно из  наиболее полезных свойств – это возможность создания собственных  команд  посредством  комбинирования  уже   существующих команд  в  файле, обрабатываемом оболочкой.  Удивительно, как много  можно достичь с  помощью этого  замечательно простого механизма. Разговор о нем начнется в главе 3.

Оставшаяся часть системы UNIX

Система UNIX  – это нечто  гораздо большее, чем описано в этой главе, да и во всей книге. К настоящему моменту вы должны иметь представление о системе и,  в частности,  о руководстве (man). С конкретными вопросами о  том, как и  когда использовать команды,  обращайтесь именно к нему.

Полезно также периодически пролистывать руководство, чтобы  освежить знания об известных командах и познакомиться с новыми. Руководство  описывает множество программ, не упомянутых в этой книге, в том  числе компиляторы для  таких языков, как ФОРТРАН 77;  про-

грамму-калькулятор: bc(1); команды cu(1)  и uucp(1)  для  межкомпьютерного общения; графические пакеты; статистические программы и такие эзотерические, как units(1).

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

История и библиография

Первой книгой, посвященной системе UNIX, была  «The  UNIX  Time sharing System» (UNIX – cистема с разделением времени) Д. М. Ритчи (D. M. Ritchie) и К. Л. Томпсона (K. L. Thompson), изданная Communications of the ACM (CACM) в июле  1974  года и переизданная там  же в январе 1983. (Страница 89 репринта включена в публикацию в марте 1983  года.)  Это обзор системы для людей, интересующихся операционными системами, который стоит  того, чтобы  его  прочитал каждый программист.

Специальный выпуск Bell System Technical Journal (BSTJ), посвященный  системе UNIX (июль  1978), содержит много  статей о дальнейшем развитии системы, а также ретроспективные материалы, в том числе обновленную редакцию оригинального документа CACM, написанного Ритчи и Томпсоном. Второй  специальный выпуск BSTJ, содержащий новые  материалы о UNIX, был опубликован в 1984.

В статье «The  UNIX  Programming Environment» (Среда программирования UNIX) Б. В. Кернигана (B. W. Kernighan) и  Д. К.  Мэши  (J. R. Mashey), появившейся в апреле 1981  года  в IEEE  Computer Magazine, сделана попытка рассказать программистам об основных возможностях системы.

Любое издание справочного руководства по UNIX (UNIX Programmer’s Manual) приводит список команд, стандартных функций и  интерфейсов,  форматов файлов и  рассказывает  о техническом обслуживании. Вам не удастся долго обходиться без него, хотя, чтобы  начать программировать, достаточно прочитать только часть  тома 1. Первый том руководства по седьмой версии системы  опубликован  издательством Holt, Rinehart and Winston.

Том 2  справочного руководства по  UNIX  называется «Documents  for Use  with the  UNIX Time-sharing System» (Документы, используемые вместе  с системой разделения времени UNIX), он содержит учебники и справочные руководства для основных команд. В частности, в нем довольно подробно  описываются программы подготовки  документов и

средства разработки программ. Со временем  вам захочется прочесть обо всем этом.

«UNIX Primer» (UNIX для начинающих) Энн и Нико Ломато (Ann  and  Nico Lomuto), изданный в 1983  году Prentice-Hall, – это хороший учебник, знакомящий с системой «зеленых» новичков, главным образом, непрограммистов.

Источник: Керниган Б., Пайк Р., UNIX. Программное окружение. – Пер. с англ. – СПб: Символ-Плюс, 2003. – 416 с., ил.

По теме:

  • Комментарии