Хотя некоторые другие хорошо ответили на этот вопрос, я хотел бы добавить несколько мыслей:
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, но его можно запустить другими способами.
which <executable>
команды будет полезно в этой теме.