왜 'sudo bash && cd Desktop'이 데스크탑 폴더에 CD로 들어가지 않습니까?

왜 'sudo bash && cd Desktop'이 데스크탑 폴더에 CD로 들어가지 않습니까?

chmod 000다양한 항목이 포함된 권한이 있는 폴더가 있습니다 . 내가 bash들어가는 방법 sudosudo bash.

나는 왜 할 수 없습니까 &&? cd다음과 같은 명령 하나로 디렉토리에 들어가고 싶습니다 .

sudo bash && cd desktop

이것을 실행해도 여전히 ~기본 디렉터리에 있습니다.

대신 이걸 실행해야 해

sudo bash
cd desktop

또한 바탕 화면은 폴더가 아니라 바탕 화면의 하위 폴더이지만 중요하지 않습니다. 어차피 마찬가지다.

답변1

이후 부분은 현재 셸에서 실행되며, 로 실행하는 &&데 전달되는 인수가 아닙니다 .bashsudo

시도해 보고 싶은 유혹을 느낄 수도 있습니다

sudo bash -c 'cd desktop'

bash하지만 그 이후에 종료되기 때문에 작동하지 않습니다 cd desktop.

당신은 시도 할 수 있습니다:

sudo sh -c 'cd desktop && exec bash'

desktop이는 "작동합니다"(즉 , uid=0인 Bash 쉘의 디렉토리에 배치됩니다 ). 나는 하나의 라이너보다 두 개의 별도 명령을 실행하는 편이 낫습니다.

답변2

예상대로 작동하지 않습니다. &&명령이 완료될 때까지 기다립니다. 해당 시점의 결과가 이면 true다음 명령을 실행합니다. 따라서 를 입력하면 bash && cd desktop먼저 bash 쉘이 표시됩니다. 를 입력하면 exit이전에 있던 쉘로 돌아갈 수 있습니다.그 다음에디렉토리가 데스크탑 폴더로 변경됩니다.

내가 설명한 기능 측면에서 sudo는 중요하지 않습니다. sudo에 대한 사용 사례는 아마도 모범 사례가 아닐 수 있으므로 다른 솔루션을 고려해야 합니다.

관련 정보