Как запустить CD от имени суперпользователя
Я хочу перейти в каталог с терминала, но доступ запрещен, и набрав sudo cd (directory) возвращает ошибку о том, что sudo не поддерживает команду cd. я могу использовать sudo gnome-terminal запустить новое окно терминала с привилегиями root, но я хочу решение, которое я могу использовать из того же окна терминала без полномочий root. Есть ли способ сделать команду cd совместимой с sudo?
2 ответа
Я боюсь, что это невозможно использовать cd с sudo непосредственно. sudo может вызывать исполняемые файлы, например sudo ls, но cd это встроенная команда оболочки Другими словами, есть файл, который содержит исполняемый скрипт для ls (/bin/ls), но нет файла для cdтак что вы не можете использовать cd с sudo,
Ну, вы, безусловно, можете запустить следующую команду:
sudo sh -c "cd somedirectory"
и технически вы изменили текущий каталог запущенной подоболочки. Проблема в том, что subshell будет немедленно завершен, и ваша основная оболочка не изменит свой собственный каталог.
Основная проблема в том, что если вы не можете cd в каталог, вы не можете запустить оболочку внутри него с вашей текущей учетной записью.
Обходной путь - переключиться на учетную запись пользователя, которая имеет это право, и root, конечно, самый простой выбор:
sudo sh -c "cd somedirectory; sh"