(В вашей системе файл для почты может быть другим; распространенным является и имя /usr/mail/you
.)
Наиболее полезной переменной интерпретатора shell
, вероятно, считается та, которая определяет, где проводится поиск команд. Вспомните, что, когда вы вводите имя команды, интерпретатор обычно вначале ищет его в текущем каталоге, затем в /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
, которая указывает тип используемого терминала. Эта информация позволяет программам более эффективно работать с экраном. Поэтому можно в .profile
добавить, например, следующее:
TERM=adm3
Можно применять переменные и для сокращения записи. Если вам часто приходится ссылаться на каталог с длинным именем, имеет смысл добавить строку типа
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:/usr/bin:/usr/games
TERM=adm3
b=$HOME/book
export MAIL PATH TERM b
date
who | wc -l $
Мы еще далеко не полностью перечислили возможности интерпретатора. В частности, можно создать собственные команды, собрав в файле уже существующие команды, и в данном случае уже будут интерпретироваться команды из этого файла. Удивительно, как многого можно добиться с помощью такого в основе своей простого средства. Мы рассмотрим его в гл. 3.
1.5 Другие средства UNIX
С системой UNIX связано значительно больше проблем, чем те, которые мы обсудили в настоящей главе. Многие из них еще будут рассматриваться в этой книге. Теперь вы должны чувствовать себя увереннее в общении с системой и, в частности, уметь ориентироваться в ее справочном руководстве. Если у вас появятся вопросы, в каких случаях и как использовать команды, всегда обращайтесь к руководству.
Имеет смысл также периодически заглядывать в руководство, чтобы освежить свои знания об известных вам командах и познакомиться с новыми. В руководстве описывается множество программ, которые мы не обсуждали, включая компиляторы языков программирования, подобные Фортран 77, программы-калькуляторы типа bc(1)
, cu(1)
и uucp(1)
— программы для межмашинного взаимодействия, графические пакеты, статистические программы и даже такая программа, как units(1)
.
Как уже отмечалось ранее, эта книга не заменяет справочное руководство, а дополняет его. В последующих главах мы будем изучать фрагменты и программы системы UNIX, используя информацию, приведенную в руководстве, и следуя логике взаимодействия компонентов системы. Хотя это взаимодействие явно не описано в руководстве, именно оно лежит в основе приемов программирования в системе.