<Предыдущая | Содержание: | Следующая>
3.2. Ориентация в файловой системе
3.2.1. Путь
Когда вы хотите, чтобы система выполнила команду, вам почти никогда не нужно указывать полный путь к этой команде. Например, мы знаем, что ls команда находится в / бен каталог (проверьте с помощью , которые -a ls), но нам не нужно вводить команду / bin / ls чтобы компьютер отобразил содержимое текущего каталога.
Команда PATH Об этом позаботится переменная окружения. Эта переменная перечисляет те каталоги в системе, где могут быть найдены исполняемые файлы, и, таким образом, избавляет пользователя от необходимости много печатать и запоминать расположение команд. Таким образом, путь, естественно, содержит множество каталогов, содержащих бункер где-то в их именах, как демонстрирует пользователь ниже. В эхо команда используется для отображения содержимого ("$") переменной PATH:
Роджер:> echo $ PATH
/ opt / local / bin: / usr / X11R6 / bin: / usr / bin: / usr / sbin /: / bin
Роджер:> echo $ PATH
/ opt / local / bin: / usr / X11R6 / bin: / usr / bin: / usr / sbin /: / bin
В этом примере каталоги / opt / local / bin, / usr / X11R6 / bin, / USR / бен, / usr / sbin и
/ бен впоследствии выполняется поиск требуемой программы. Как только совпадение найдено, поиск останавливается, даже если не все каталоги на пути были просмотрены. Это может привести к странным ситуациям. В первом примере ниже пользователь знает, что существует программа под названием Отправить смс для отправки SMS-сообщения, и другой пользователь в той же системе может использовать его, но она не может. Разница в конфигурации PATH переменная:
[Дженни @ blob Дженни] $ Отправить смс bash: sendms: команда не найдена [jenny @ blob jenny] $ echo $ PATH
/ bin: / usr / bin: / usr / bin / X11: / usr / X11R6 / bin: / home / jenny / bin [jenny @ blob jenny] $ su - tony
Пароль: tony: ~> который отправляет SMS
sendms - это / usr / local / bin / sentms
Тони: ~> echo $ PATH
/home/tony/bin.Linux: / home / tony / bin: / usr / local / bin: / usr / local / sbin: \
/ usr / X11R6 / bin: / usr / bin: / usr / sbin: / bin: / sbin
[Дженни @ blob Дженни] $ Отправить смс bash: sendms: команда не найдена [jenny @ blob jenny] $ echo $ PATH
/ bin: / usr / bin: / usr / bin / X11: / usr / X11R6 / bin: / home / jenny / bin [jenny @ blob jenny] $ su - tony
Пароль: tony: ~> который отправляет SMS
sendms - это / usr / local / bin / sentms
Тони: ~> echo $ PATH
/home/tony/bin.Linux: / home / tony / bin: / usr / local / bin: / usr / local / sbin: \
/ usr / X11R6 / bin: / usr / bin: / usr / sbin: / bin: / sbin
Обратите внимание на использование su (переключение пользователя) средство, которое позволяет запускать оболочку в среде другого пользователя при условии, что вы знаете пароль пользователя.
Обратная косая черта указывает на продолжение строки на следующей, без символа Enter отделяя одну строку от другой.
В следующем примере пользователь хочет позвонить в wc (количество слов), чтобы проверить количество строк в файле, но ничего не происходит, и он должен прервать свое действие, используя Ctrl+C комбинация:
перемычка: ~> wc -l тест
(Ctrl-С)
перемычка: ~> какой туалет
wc хешируется (/ home / jumper / bin / wc)
перемычка: ~> echo $ PATH
/ домашний / перемычка / bin: / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin
перемычка: ~> wc -l тест
(Ctrl-С)
перемычка: ~> какой туалет
wc хешируется (/ home / jumper / bin / wc)
перемычка: ~> echo $ PATH
/ домашний / перемычка / bin: / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin
Использование , которые команда показывает нам, что у этого пользователя есть бункер-каталог в его домашнем каталоге, содержащий программу, которая также называется wc. Поскольку программа в его домашнем каталоге обнаруживается первой при поиске в
пути по призыву wc, эта "самодельная" программа выполняется, с вводом, который она, вероятно, не понимает, поэтому мы должны остановить ее. Для решения этой проблемы есть несколько способов (всегда есть несколько способов решить проблему в UNIX / Linux): одним из ответов может быть переименование пользователя. wc программу, или пользователь может указать полный путь к конкретной команде, которую он хочет, которую можно найти с помощью -a вариант для , которые команда.
Если пользователь чаще использует программы в других каталогах, он может изменить свой путь, чтобы в последний раз искать в своих каталогах:
перемычка: ~> экспорт ПУТЬ = / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin: / home / jumper / bin
перемычка: ~> экспорт ПУТЬ = / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: \
/ usr / bin: / usr / sbin: / bin: / sbin: / home / jumper / bin