Базовый путь к исполняемому файлу Linux не отображается

Базовый путь к исполняемому файлу Linux не отображается

Я пытаюсь найти путь к базовым командам, таким как lsили cdс помощью whichкоманды. Я вижу путь для , lsно не для cd. Конечно, обе команды работают нормально. Есть идеи?

$ which ls
/bin/ls
$ which cd
$

решение1

cdвсегда встроенная команда, предоставляемая самой оболочкой. Она не будет найдена как внешняя утилита. Это никоим образом не относится к Linux.

ИзРаздел «ИСПОЛЬЗОВАНИЕ ПРИЛОЖЕНИЯ» cdв стандарте POSIX:

Так как cdвлияет на текущую среду выполнения оболочки, она всегда предоставляется как обычная встроенная оболочка. Если она вызывается в подоболочке или отдельной среде выполнения утилиты, например, одной из следующих:

(cd /tmp)
nohup cd
find . -exec cd {} \;

это не влияет на рабочий каталог среды вызывающего абонента.


Портативный способ поиска пути к команде — использовать command -v:

bash-4.4$ command -v ls
/bin/ls
bash-4.4$ command -v cd
cd

typeбудет немного более подробным:

bash-4.4$ type ls
ls is /bin/ls
bash-4.4$ type cd
cd is a shell builtin

Смотрите также "Почему бы не использовать "which"? Что тогда использовать?"

Связанный контент