
Многие ответы StackOverflow предполагают, что это потому, cd
что это встроенная функция, но type cd
и та, и type pwd
другая возвращают «shell builtin» и sudo cd
возвращают только «команда не найдена».
Так cd
рассматривается ли это как особый случай, вопреки многим ответам на SO, которые « sudo
работают только с программами»?
решение1
pwd
существует как встроенная функция оболочки (поэтому и type pwd
возвращает, что она встроенная в оболочку), так и отдельно какОсновная утилита GNU. Версия, pwd
которую использует ваша система, этоОсновная утилита GNUверсия. Это исполняемый файл, и поэтому для его запуска можно использовать sudo; в отличие от cd
sudo, который является встроенной командой оболочки.
Вы можете убедиться в этом сами.
Введите обе эти команды самостоятельно и посмотрите на результаты. (Если в вашей системе есть несколько версий одной и той же команды, команда which
сообщит вам, какая из них вызывается, когда вы ее введете)
which pwd
which cd
Встроенная оболочка не вернет путь к исполняемому файлу при запуске 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)
решение2
Где-то есть pwd
исполняемый файл (попробуйте whereis pwd
) и sudo
используйте его.