“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.