Где в Linux определены базовые команды, доступные без переменной окружения PATH?
После затирания переменной PATH, думал, что /bin проверяется по умолчанию.
Как оказалось, остаются доступными команды echo и pwd (оба в /bin), но становится недоступным cat, который тоже располагается в /bin
Как sh находит echo и pwd без указания полного пути к ним при пустой переменной окружения PATH и где можно посмотреть полный список команд, доступных при этом условии?
P.S. Если есть какие-то ссылки на более расширенные книги/источники по теме, также буду благодарен.
Linux никакие команды не ищет, если PATH пустой. Поиск внешних исполняемых файлов идет ТОЛЬКО по каталогам, которые прописаны в PATH.
В Windows всегда предварительно проверяется текущий каталог, кроме того есть куча алиасов через вроде dosset и реестр
в Linux команды могут быть:
встроенную в оболочку (pwd, echo)
alias, который может ссылаться на внешнюю программу
Внешние файлы, которые лежат в папках указанных в PATH
узнать что за команда внутренняя или внешняя можно через команду type или which:
$ type type
type is a shell builtin