"sudo cd"가 작동하지 않는 이유는 무엇입니까?

"sudo cd"가 작동하지 않는 이유는 무엇입니까?

입력하는 이유sudo cd 뭐든지디렉토리를 바꾸지 않겠습니까?

답변1

cd쉘 내장입니다. sudo실행 파일에서만 작동합니다. 그렇게 할 수도 있지만 sudo sh -c 'cd dirname'쉘이 종료되자마자 시작한 디렉토리로 돌아갑니다. 당신이 성취하려는 것이 무엇인지 말하면, 나는 당신이 그것을 할 수 있는 방법을 찾는 데 도움을 줄 수 있습니다.

답변2

sudo -s대신 루트 쉘을 시작한 다음 간단히 cd디렉토리로 들어가 십시오 .
루트로 작업을 마쳤으면 키를 누르 CtrlD거나 를 입력합니다 exit.


Arjan이 아래 의견에서 암시했듯이 루트 사용자는 필수 시스템 구성 요소를 쉽게 손상시킬 수 있다는 점에 유의하는 것이 중요합니다.주의해서 사용하세요!

답변3

su간단히 루트가 되면 원하는 모든 것을 할 수 있습니다 cd... 답변이 이미 승인되었다는 것을 알고 있지만 답변이 sudoers 목록에 없으면 이것이 유일한 옵션입니다.

답변4

OS에 따라 "작동하지 않는" 두 가지 방법이 있습니다.

  1. OS가 POSIX를 따르는 경우 실행 sudo cd하면외부 명령/usr/bin/cd루트 사용자로 분기된 프로세스에서 실행하려면 "cd"(일반적으로 에 있음 )입니다. 해당 프로세스는 디렉터리를 성공적으로 변경합니다. 해당 프로세스가 완료되면 일반 셸로 돌아가게 됩니다. 이 셸은 시작된 디렉터리에 여전히 남아 있습니다.

    따라서 sudo cd오류 없이 실행되지만 현재 셸의 현재 작업 디렉터리는 변경되지 않습니다.

    (참조:이 답변)

  2. 그렇지 않으면 실행 sudo cd하면 다음이 발생합니다. 컴퓨터는 PATH를 통해 "cd"라는 실행 파일을 찾으려고 합니다. 하나도 찾지 못할 것입니다. (오직쉘 내장 명령"cd"가 존재하지만 실행 파일이 아닙니다.) 따라서 오류가 발생합니다. (우분투에서는 오류 메시지가 나타납니다 sudo: cd: command not found.)

    그래서 sudo cd오류가 발생하여 실행됩니다.

관련 정보