Когда вы используете команду
ls, как shell находит соответствующий выполняемый файл (программу)
для ls? На самом деле в большинстве систем ls находится
в /bin/ls. shell использует переменную среды PATH
("ТРОПА") для указания возможного местоположения выполняемых файлов соответствующих
команд.
Например, ваша переменнаяPATH
может иметь значение
/bin:/usr/bin:/usr/local/bin:.
Это список каталогов (в
которых shell будет искать команду), отделяемых друг от друга двоеточием ``:''.
Когда вы используете команду ls, shell прежде всего
проверяет наличие /bin/ls, затем /usr/bin/ls и т.д.
Обратите внимание на то,
что переменная PATH не помогает находить обычные файлы. Например,
если вы используете команду
/home/larry# cp foo bar
shell не использует PATH
для нахождения местопребывания файлов foo и bar -
предполагается, что эти имена однозначно определяют место. shell использует
PATH только для нахождения команды cp.
Это экономит вам массу времени;
это означает, что вы не обязаны помнить, где находятся выполняемые файлы команд.
Во многих системах выполняемые файлы разбросаны во многих местах, таких как
/usr/bin, /bin или /usr/local/bin. Вместо
того, чтобы писать полное имя команды (вроде /usr/bin/cp), вы просто
указываете в PATH перечень каталогов, которые бы вы хотели, чтобы
shell автоматически просматривал.
Обратите внимание, что PATH
содержит ``.'', что означает "текущий рабочий каталог". Это позволяет
вам создавать shell-сценарии или программы и выполнять их как команды из текущего
каталога, без необходимости указывать это прямо (как в случае ./makebook).
Если каталог не указан в PATH, то shell не будет его просматривать
в поиске команд, это касается и текущего каталога.