Задать вопрос

Где в Linux определены базовые команды, доступные без переменной окружения PATH?

После затирания переменной PATH, думал, что /bin проверяется по умолчанию.
Как оказалось, остаются доступными команды echo и pwd (оба в /bin), но становится недоступным cat, который тоже располагается в /bin

Как sh находит echo и pwd без указания полного пути к ним при пустой переменной окружения PATH и где можно посмотреть полный список команд, доступных при этом условии?

P.S. Если есть какие-то ссылки на более расширенные книги/источники по теме, также буду благодарен.
  • Вопрос задан
  • 293 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Linux никакие команды не ищет, если PATH пустой. Поиск внешних исполняемых файлов идет ТОЛЬКО по каталогам, которые прописаны в PATH.

В Windows всегда предварительно проверяется текущий каталог, кроме того есть куча алиасов через вроде dosset и реестр

в Linux команды могут быть:
встроенную в оболочку (pwd, echo)
alias, который может ссылаться на внешнюю программу
Внешние файлы, которые лежат в папках указанных в PATH

узнать что за команда внутренняя или внешняя можно через команду type или which:
$ type type
type is a shell builtin

$ type which
which is /usr/bin/which
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
man bash
Раздел SHELL BUILTIN COMMANDS
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
romy4
@romy4
Exception handler
echo и pwd — это команды шэла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы