(В вашей системе файл для почты может быть другим; распространенным является и имя /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, используя информацию, приведенную в руководстве, и следуя логике взаимодействия компонентов системы. Хотя это взаимодействие явно не описано в руководстве, именно оно лежит в основе приемов программирования в системе.