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


답변:


56

cd쉘 내장입니다. sudo실행 파일에서만 작동합니다. 당신은 할 수 sudo sh -c 'cd dirname'있지만, 즉시 쉘 종료로, 당신은 당신이에서 시작 디렉토리로 돌아갑니다. 당신이 성취하려고하는 것을 말하면, 그렇게하는 방법을 찾도록 도울 수 있습니다.


2
그러나 그때도 sudo pwd작동하지 않습니까? (항상 그것이 효과 sudo cd 가 있다고 생각 했지만 sudo반환 후 결과를 보지 못하고 있습니다 . 그러나 그것은 단지 거친 추측 일뿐입니다. Mac의 Bash에는 실제로 내장되어 있지 cd않거나 pwd실제로 내장되어 있지 않습니다 . 실행 which cd 은 실제로 결과를 제공합니다. sudo cd /나에게 오류를주지 않지만 실제로 작업 디렉토리가 변경되지는 않습니다.)
— Arjan

2
@Arjan : pwd또한 외부 실행 파일이므로 작동합니다. 일부 시스템에는 cd실행 파일이 있지만 대부분 쓸모가 없습니다. 그런데 type -a cd보다 유익한 정보를 사용해보십시오 which.
— Dennis Williamson

1
좋은! 그리고 내 Mac에 type -a cd모두 표시됩니다 . 그리고 마찬가지로에 와 . 그리고 모두 와는 나에게 결과를 제공 할 수. 그러나, 만 산출 하고 나에게 보여줍니다 . 그래서 질문은 OP가 오류 메시지를 받습니까 , 아니면 OP 가 오류없이 작업을 보지 않습니까? (또는 : 어떤 OS에서 OP를 사용하고 cd is a shell builtincd is /usr/bin/cdpwdechosudo pwdsudo echo "Hello world"type -a returnreturn is a shell builtinsudo return 3sudo: return: command not foundcd
— 있습니까

sudo sh -c 'cd dirname'나를 위해 아무것도하지 않습니다.
— 피터 Niederwieser

1
@Arjan 나는 설명을 발견했다 : 그것은 깊은 호환성 해킹과 같은 것이다. 그것은 그 기능을 수행하지는 않지만 실제와 같은 부작용 cd이 있습니다. 그리고 현재 쉘에 cd명령 이 없을 때 실패하는 대신 아무것도 할 수 없습니다 . 를 cd포함하여 인간이 사용할 수있는 모든 껍질이 있습니다 /bin/sh. 그러나 운영 체제 커널에서 볼 수있는 프로그램은하는 쉘은 줄의 코드도 단지 몇보다 훨씬 간단 할 수 있습니다. 외부 명령 의 요점은 무엇입니까?를cd
— Volker Siegel

72

대신 sudo -s루트 쉘을 시작한 다음 cd디렉토리 로 간단 하게 사용하십시오.
루트로 완료되면을 누르 CtrlD거나을 입력하십시오 exit.


Arjan은 아래의 주석에서 암시 하듯이 루트로서 필수 시스템 구성 요소를 쉽게 손상시킬 수 있습니다. 조심해서 사용하십시오!


4
그러나 : 일단 루트가되면 조심하십시오 ...
— Arjan

7

당신은 단순히 su루트가되고 나서 cd원하는 모든 것을 할 수 있습니다 ... 답변이 이미 승인 된 것을 알고 있지만, sudoers 목록에없는 경우 이것이 유일한 옵션입니다.


반면에 루트 암호가 없거나 모르는 경우 sudo가 유일한 옵션입니다.
— Liam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.