Linux Labs

Первые шаги / Ступень 14 из 15

Справка и оболочка

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 8 · на машине · 5 мин

Где Bash ищет команду

Набирая cp, ты не пишешь, где лежит программа: оболочка находит её сама. Где она ищет, покажут echo $PATH и type.

Если в имени команды нет /, Bash сначала проверяет свои встроенные команды, например cd и pwd. Потом ищет файл с таким именем в каталогах из PATH. PATH — переменная окружения: именованное значение, которое оболочка передаёт запущенным программам. Его значение — список каталогов через двоеточие.

bash
echo $PATH
type cp
type cd
type lab-status

echo $PATH печатает этот список: на учебной машине он начинается с /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin. Каталоги проверяются слева направо, и запускается первый найденный файл.

type показывает, что Bash нашёл по имени: cp is /usr/bin/cp — файл из PATH, cd is a shell builtin — встроенная команда, not found — ничего. Если cp уже запускалась в этой оболочке, type напечатает cp is hashed (/usr/bin/cp): Bash запомнил найденный путь.

Если в имени есть /, поиска нет: ~/tools/lab-status и ./lab-status указывают на файл напрямую. Точка в ./lab-status — текущий каталог, как в уроке о путях.

Проверь себя 1 вопрос

Ты перешёл в каталог ~/tools и набираешь lab-status. Что напечатает оболочка?

  • Текущий каталог в PATH не входит, и Bash его не проверяет. Из этого каталога сработает ./lab-status.

  • До запуска дело не доходит: имя не нашлось ни среди встроенных команд, ни в каталогах PATH. type lab-status напечатает not found.

  • type только показывает результат поиска и ничего не меняет. Выполни type lab-status дважды — вывод будет тем же.

Для имени без / Bash просматривает каталоги из PATH, и текущего каталога среди них нет. Файл рядом запускают путём: ./lab-status.

Главное в шаге

  • Имя без / Bash ищет среди встроенных команд, потом в каталогах PATH слева направо.
  • Имя с / — путь к файлу: ./lab-status запускает файл из текущего каталога без поиска.
  • type имя показывает, что запустится: встроенная команда, файл из PATH или ничего.
Ubuntu 24.04
Загрузка…