Хотя некоторые другие хорошо ответили на этот вопрос, я хотел бы добавить несколько мыслей:
1) PATH используется только в том случае, если в вызываемом исполняемом файле нет элементов пути. somecommand будет искать в $ PATH, ./somecommand
или /usr/bin/somecommand
, или ../../bin/somecommand
просто используйте правила каталога, а не PATH
Если в PATH есть несколько исполняемых файлов с одинаковыми именами, какой из них предпочтительнее?
Он останавливается на первом найденном, читая $ PATH слева направо.
Текущий каталог включается в поиск при запуске файла?
Если текущий каталог находится в PATH, то он ищется. Помните, что пустой каталог в PATH включает текущий каталог. например, PATH =:/usr/bin (ведущий пустой) PATH =/usr/bin: (завершающий пустой) и PATH =/usr/bin::/bin (средний пустой) будут эффективно включать текущий рабочий каталог.
Предположим, что в текущем каталоге есть файл с именем executetable.sh. Будет ли это работать, если он выполняется $ выполняется и. не является частью PATH?
Он никогда не найдет его путем поиска PATH. Если текущий каталог не находится в PATH, он не найдет его при поиске PATH.
Это сказало (и извините, чтобы добавить путаницу), если был псевдоним или функция, которая выполнила команду, это будет выполнено. Или, если ваша оболочка имеет кэш местоположения, а исполняемый файл находится в кеше, он может его найти. Таким образом, он никогда не найдет его в PATH, но его можно запустить другими способами.