Каталог программ, перечисленных в bash

В bash (или любой другой оболочке), когда вы вводите «firefox» или другую команду, как bash указывает ее на фактическое местоположение (/ usr / bin / firefox)? Кроме того, где находится «каталог» для автозаполнения bash?

  • Ошибка размера физического блока GParted
  • Как скопировать и вставить между моей локальной системой и удаленной системой при использовании rdesktop в Linux?
  • Что такое альтернатива XPerf для Linux и Mac OS X?
  • Ожидается ли, что firejail позволяет использовать R / W вне песочницы без флага «--overlay»?
  • Как настроить Linux-машину для игнорирования Wi-Fi при подключении через локальную сеть?
  • Как смонтировать сжатый ISO-образ?
  • Отключить масштабирование экрана в Xvesa?
  • Пользовательские разрешения: Daemon и User
  • 4 Solutions collect form web for “Каталог программ, перечисленных в bash”

    Существует $PATH которая содержит все пути (разделенные двоеточиями) для поиска имен команд. Эти папки проверяются от первого до последнего, и команда выполняется при обнаружении (поэтому, если в разных каталогах $PATH есть несколько файлов этого имени, будет выполнен первый).

    Чтобы просмотреть $PATH :

     echo $PATH 

    Чтобы проверить, где находится firefox :

     which firefox 

    bash и другие оболочки и командные процессоры ищут ваши каталоги PATH , ища исполняемый файл, который соответствует введенному имени команды.

    Основные вопросы уже приведены в других ответах. Технически оболочка сохраняет местоположение команды в хеш-таблице. В bash вы можете просмотреть эту таблицу с помощью команды hash :

     $ hash hits command 2 /usr/bin/ldd 1 /usr/bin/man 1 /usr/bin/less 

    Вы также можете изменить эту хеш-таблицу, для деталей я цитирую страницу bash man:

     hash [-lr] [-p filename] [-dt] [name] 

    Для каждого имени полное имя файла команды определяется путем поиска каталогов в $ PATH и запоминается. Если задана опция -p, поиск путей не выполняется, а имя файла используется как полное имя файла команды. Параметр -r заставляет оболочку забыть все запомненные местоположения. Опция -d заставляет оболочку забыть запоминаемое местоположение каждого имени. Если задана опция -t, будет напечатано полное имя пути, которому соответствует каждое имя. Если несколько аргументов имени поставляются с -t, имя печатается до хэшированного полного пути. Параметр -l заставляет вывод выводиться в формате, который может быть повторно использован как вход. Если аргументы не заданы или если задано только -l, выводится информация о запоминаемых командах. Статус возврата является истинным, если имя не найдено или указана недопустимая опция. Здесь вы можете увидеть, какие команды вы уже выполнили в этом сеансе.

    Другие оболочки могут вести себя по-другому, в zsh (и я думаю, что это было адаптировано из csh ) оболочка собирает всю команду при запуске или путем вызова rehash . Затем вы получите полный список всех доступных команд с hash и вы можете искать, например, для всех вариантов diff :

     zsh$ hash | grep diff bzdiff=/usr/bin/bzdiff cdiff=/usr/bin/cdiff colordiff=/usr/bin/colordiff diff=/usr/bin/diff diff3=/usr/bin/diff3 ptardiff=/usr/bin/ptardiff sdiff=/usr/bin/sdiff tkdiff=/usr/bin/tkdiff vimdiff=/usr/bin/vimdiff xzdiff=/usr/bin/xzdiff zdiff=/usr/bin/zdiff 

    Опять же, обратитесь к man zshbuiltins за гораздо более подробной информацией.

    1. Bash использует $PATH среды $PATH для поиска программ по слову. Пути разделяются : Ваш $PATH , скорее всего, что-то вроде :/usr/bin:/usr/games:/usr/local/bin:/usr/local/games: поэтому он находит его в /usr/local/bin . Измените свой $PATH и повторите попытку.
    2. Вы можете изменить поведение завершения вкладок с помощью complete встроенного. См. «Программируемое завершение» man bash .
    Interesting Posts

    Плата за комиссию составляет 100%, но физическая память составляет всего 60% при использовании файла страницы

    Как изменить длинные имена файлов (созданные в Linux) в Windows?

    Windows-7 hdmi audio

    Динамически выбирать столбцы фрейма данных с помощью $ и вектора имен столбцов

    Как заставить кнопку колеса мыши выполнить двойной щелчок в окнах 7?

    Wake on Lan работает из локальной сети, но не WAN

    Подключение к базе данных PostgreSQL из Excel 2013 Power Query с Npgsql

    Почему Access сообщает, что не может получить команду для своей программы?

    Маршрутизация определенной подсети в туннель VPN

    Обновление с Windows 7 Home Premium до профессионала

    Питание на USB потеряно, когда компьютер находится под нагрузкой

    Могу ли я установить приложение Windows 8 прямо с веб-сайта магазина приложений?

    Как отключить брандмауэр Windows 8?

    Windows 10 перезапускается при попытке спячки

    Если вы подключите лазерный принтер непосредственно к розетке?

    Давайте будем гением компьютера.