Многие из ответов SO предполагают, что это потому, что cd является встроенным, но type cd и type pwd оба возвращают "встроенную оболочку", и только sudo cd возвращает "команду не найдена".

Таким образом, cd рассматривается как особый случай вопреки многим ответам на SO, который " sudo работает только с программами"?

2 ответа2

2

Где-то есть исполняемый файл pwd (попробуйте whereis pwd), и sudo использует его.

2

pwd существует как встроенная оболочка (поэтому type pwd возвращает встроенную оболочку), так и отдельно как базовая утилита GNU. Версия pwd , используемая вашей системой, является версией GNU Core Utility . Это исполняемый файл, и как таковой sudo может использоваться для его запуска; в отличие от cd который является встроенной командой оболочки.

Вы можете убедиться в этом сами. Введите обе эти команды самостоятельно и наблюдайте за результатами. (если в вашей системе несколько версий одной и той же команды, which команда сообщит вам, какая из них вызывается при ее вводе)

какой pwd

какой компакт-диск

Встроенная оболочка не будет возвращать путь к исполняемому файлу при запуске команды which . Вот пример выходных данных обеих команд в моей системе:

nate@linux:~> which pwd  
/usr/bin/pwd


nate@linux:~> which cd
which: no cd in (/home/nate/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin:/home/nate/Scripts:/home/nate/Scripts)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .