Главная > Управление файлами и каталогами > which

Руководство по команде which: нахождение местоположения исполняемых команд

`which` команда используется в операционных системах Linux и Unix для поиска местоположения определенной команды (исполняемого файла) среди директорий, указанных в переменной окружения `PATH`, то есть для определения, какая именно команда будет выполнена. Это очень полезно для проверки наличия программы в сценариях оболочки или для выяснения, какая из нескольких версий программы с одинаковым именем будет выполнена. Используйте это руководство, чтобы освоить использование команды `which` и ее основные параметры.

Обзор which

`which` команда сообщает пользователю, где именно находит исполняемый файл команды (например, `ls`, `python`, `nginx`), вводимой в терминал. Она работает, последовательно просматривая директории, установленные в переменной окружения `PATH`, и выводя абсолютный путь к первому найденному исполняемому файлу. Если команда не найдена, ничего не выводится или возвращается сообщение об ошибке.

Основная роль which

`which` команда в основном используется для следующих целей:

Основные области применения

  • Проверка местоположения команды: Проверяет, где находится исполняемый файл указанной команды среди путей, определенных в переменной окружения `PATH`.
  • Управление версиями: Когда установлено несколько версий программы с одинаковым именем, помогает выяснить, какая версия будет выполнена в текущей оболочке.
  • Проверка наличия программы в сценарии: В сценариях оболочки проверяет, установлена ли определенная программа, и если нет, предлагает установить ее или обрабатывает ошибку.
  • Отладка переменной окружения `PATH`: Проверяет, корректно ли установлена переменная `PATH`, или включен ли определенный путь, чтобы команда была найдена.

Понимание переменной окружения `PATH`

Чтобы понять работу команды `which`, необходимо знать о переменной окружения `PATH`. `PATH` - это переменная окружения, которая хранит список директорий, разделенных двоеточиями (`:`), в которых оболочка ищет исполняемые файлы при выполнении команды. Оболочка ищет команду в директориях, перечисленных в `PATH`, в указанном порядке.

Проверка переменной окружения `PATH`

echo $PATH

Вы можете использовать команду `echo`, чтобы проверить значение переменной окружения `PATH`, установленной в текущей оболочке.

Основные параметры команды which

`which` команда проста, но предлагает полезные параметры, такие как поиск всех совпадений или игнорирование псевдонимов (alias) и функций.

1. Основной поиск

2. Параметры управления поиском

Сгенерированная команда:

Комбинируйте команды.

Описание:

`which` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

Освойте способы эффективного определения местоположения исполняемых команд в системе с помощью различных примеров использования команды `which`.

Поиск местоположения исполняемого файла команды `ls`

which ls

Выводит абсолютный путь к исполняемому файлу команды `ls`, который обычно находится по адресу `/usr/bin/ls`.

Поиск всех исполняемых файлов команды `python`

which -a python

Если в системе установлены несколько версий исполняемого файла `python` (например, `python2`, `python3`), выводит все совпадающие пути в переменной `PATH`.

Проверка наличия команды (использование в сценарии)

if which grep > /dev/null; then
  echo "Команда grep установлена."
else
  echo "Команду grep не удается найти. Необходима установка."
fi

Пример проверки, установлена ли команда `grep` в системе, и выполнения других действий в зависимости от этого.

Поиск реального бинарного местоположения команды `sudo`

which --skip-alias --skip-functions sudo

`sudo` может быть определено как псевдоним или функция оболочки, но с помощью параметров `--skip-alias` и `--skip-functions` можно найти путь к реальному исполняемому файлу.

Поиск несуществующей команды

which nonexistent_command

Если вы ищете несуществующую команду `nonexistent_command` с помощью `which`, ничего не выводится. Сообщение об ошибке можно увидеть, перенаправив его с помощью `2>&1`.


Те же команды в категории