Я пытаюсь найти путь к базовым командам, таким как 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"? Что тогда использовать?"