Перейти к содержимому

Почему не работает "sudo cd"?

3 ответа

67

Instead try using sudo -s to start a root shell and then simply cd into the directory.
When you're done as root, press CtrlD or type exit.


As Arjan hints at in his comment below, it is important to note that as root, one can easily do damage to essential system components. Use with care!

Но: будьте осторожны, если вы корень ...

Arjan · 15 лет назад · 4
oKtosiTe ответил 15 лет назад
O 6 068
49
Принятый ответ

cdэто встроенная оболочка sudoработает только с исполняемыми файлами. Вы можете сделать это, sudo sh -c 'cd dirname'но как только выйдет оболочка, вы вернетесь в каталог, из которого начали. Если вы скажете, что вы пытаетесь сделать, тогда я могу помочь вам найти способ сделать это.

Но тогда sudo pwd тоже не сработает? (Я всегда думал, что sudo cd * * работает *, но вы просто не видите результат после того, как sudo вернется. Но это было просто дикое предположение. Может быть, ни cd, ни pwd на самом деле не созданы в Bash на Mac. Запуск which cd * действительно * дает мне результаты. Запускsudo cd /не дает мне ошибки, но на самом деле не приводит к изменению рабочего каталога.)

Arjan · 15 лет назад · 2

@Arjan: pwd также является внешним исполняемым файлом, поэтому он будет работать. Обратите внимание, что в некоторых системах есть исполняемый файл cd, но он в основном бесполезен. Попробуйте использовать type -a cd, кстати, это гораздо более информативно, чем which.

Dennis Williamson · 15 лет назад · 2

Ницца! type -a cd показывает, что cd является встроенной оболочкой и cd is / usr / bin / cd на моем Mac. И аналогично для pwd и echo. И sudo pwd иsudo echo "Hello world"дают мне результат. Однако type -a return только возвращает return - встроенная оболочка, а sudo return 3 показывает мне sudo: return: команда не найдена. Итак, я предполагаю, что вопрос заключается в следующем: получает ли OP сообщение об ошибке или OP не видит работу cd без какой-либо ошибки? (Или: какую ОС использует ОП.)

Arjan · 15 лет назад · 1

sudo sh -c 'cd dirname' ничего не делает для меня.

Peter Niederwieser · 15 лет назад · 0

@Peter: Смотрите часть моего ответа, которая начинается "но ..."

Dennis Williamson · 15 лет назад · 0

@Dennis: я неправильно понял эту часть. Ответ будет легче понять, если за cd dirname последует что-то (например,; ... ).

Peter Niederwieser · 15 лет назад · 0
Dennis Williamson ответил 15 лет назад
D 75 594
7

Вы можете просто suстать пользователем root, а потом cdвсе, что вы хотите ... Я знаю, что ответ уже принят, но если его нет в списке sudoers, то это единственный вариант.

С другой стороны, если нет пароля root или вы его не знаете, sudo - единственный вариант.

Liam · 10 лет назад · 0
Alex ответил 13 лет назад
A 984