Как Unix ищет исполняемые файлы?

Когда файл выполняется, как Unix ищет его? Если в PATH есть несколько исполняемых файлов с тем же именем, какой из них предпочтительнее? Является ли текущий каталог включенным в поиск при выполнении файла?

Предположим, что в текущем каталоге есть файл с именем executable.sh . Будет ли это работать, если он выполняется $ executed и . Не является частью PATH ?

  • Инструменты Unix: что, если файл называется минусом?
  • Почему удаление SFTP происходит так долго?
  • Bash - обработка вывода по одной строке за раз
  • Как я могу исправить свой пользовательский PS1 для переноса длинной команды на несколько строк вместо одной строки?
  • Найти и удалить все каталоги с именем «test» в linux
  • Есть ли способ сделать bash более дружественным к TAB?
  • Что происходит с запущенными процессами, когда я теряю удаленное соединение с полем * nix?
  • Регулярное выражение для слова «или» нескольких слов в grep
  • 4 Solutions collect form web for “Как Unix ищет исполняемые файлы?”

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

    Для файлов в текущем каталоге вам нужно будет предшествовать им ./ , поэтому команда станет ./executable.sh . Тебе никогда не должно быть . В вашей PATH, поскольку это создает угрозу безопасности, среди других проблем.

    Каталоги, которые сначала попадают в PATH и сначала просматриваются.

    Общий порядок поиска выглядит так, если я правильно помню:

    • псевдонимы

    • Экспортируемые функции

    • Встроенные команды оболочки

    • Скриптов и двоичных файлов в вашем PATH

    Хотя это было хорошо сказано некоторыми другими, я хотел бы добавить некоторые мысли:

    1) PATH обрабатывается только в том случае, если вызываемый исполняемый файл не имеет в нем никаких элементов пути. Somecommand будет искать в $ PATH, ./somecommand или /usr/bin/somecommand или ../../bin/somecommand просто используйте правила каталога, а не PATH

    Если в PATH есть несколько исполняемых файлов с тем же именем, которое предпочтительнее?

    Он останавливается при первом обнаружении, читает $ PATH слева направо.

    Текущая директория включена в поиск при выполнении файла?

    Если текущий каталог находится в PATH, он выполняется поиск. Помните, что пустой каталог в PATH включает текущий каталог. Например, PATH =: / usr / bin (ведущий пустой) PATH = / usr / bin: (trailing empty) и PATH = / usr / bin :: / bin (средний пустой) будут эффективно включать текущий рабочий каталог.

    Предположим, что в текущем каталоге есть файл с именем executable.sh. Будет ли это работать, если он выполняется $ execute и. Не является частью PATH?

    Он никогда не найдет его, выполнив поиск PATH. Если текущий каталог не находится в PATH, он не найдет его с помощью поиска PATH.

    При этом (и жаль добавить путаницу), если был псевдоним или функция, которая выполняла команду, она будет запущена. Или если в вашей оболочке был кеш местоположения, а исполняемый файл был в кеше, он может его найти. Таким образом, он никогда не найдет его в PATH, но он может управляться другими способами.

    Чтобы узнать, что ваш путь в данный момент, просто введите echo $PATH или printenv PATH .

    Тогда вы узнаете порядок поиска. Если у вас есть несколько файлов с тем же именем, просто запустите ____, чтобы увидеть.

    Ex.

    System #>, который grep

    / USR / бен / Grep

    Классный способ найти файлы, которые работают как ваша цель, – использовать apropos:

    По поводу grep

    Bzgrep (1) – поиск возможно bzip2 сжатых файлов для регулярного выражения

    Egrep (1) – печатать строки, соответствующие шаблону

    Fgrep (1) – печатать строки, соответствующие шаблону

    Grep (1) – печатать строки, соответствующие шаблону

    и так далее…

    Interesting Posts

    Двойная загрузка Windows 7 с Windows 7

    Антенна с высоким коэффициентом усиления: установите Wi-Fi-маршрутизатор на одну антенну или два

    Скрытые файлы USB

    Как я могу создать изображение на жестком диске несколько раз одновременно?

    Отформатируйте защищенную (поврежденную) SD-карту

    Как создать загрузочный DVD-диск с USB-накопителя?

    Hilight / выберите файл с пакетным скриптом

    Как активировать и деактивировать подсказки подсветки экрана блокировки Windows 10?

    Невозможно установить обновления на чистую Windows 8.1

    Почему вложенные изображения Outlook 2007 больше оригинала?

    Путь слишком длинный при удалении из PowerShell на удаленном компьютере

    Требования к видеокарте и блоку питания

    Windows 10: PuTTY работает неправильно в контекстном меню панели задач?

    В каком формате Audacity обрабатывает сжатые аудиофайлы?

    Как остановить открытие каждого файла пакета как процесс с именем cmd.exe, как показано в диспетчере задач

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