'sudo [command]'와 'sudo sh [command]의 차이점은 무엇입니까?


13

Ubuntu 12.04.2 LTS에 VMware Workstation을 설치하려고합니다. 다음 명령을 실행하면

sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

한 번에 완료되고 설치가 시작되지 않습니다.

이 명령을 실행하면

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle

설치 프로그램을 성공적으로 시작할 수 있습니다.

이것이 왜 차이를 만드는가?



뿐만 아니라 관련 : askubuntu.com/questions/70534/...
Nanne

답변:


13

파일이 실행 파일로 표시되어 있지 않으면 명령 쉘 인터프리터를 호출하여 파일을 실행해야합니다.

예 :

  • sudo sh foosudo 권한 을 사용하여 foo 를 엽니 다 .sh

  • sudo bash foosudo 권한 을 사용하여 foo 를 엽니 다 .bash

  • sh foo사용자의 권한 을 사용하여 foo 를 엽니 다 sh.

  • bash foo사용자의 권한 을 사용하여 foo 를 엽니 다 bash.

파일을 실행 파일로 표시하면 파일을 호출하기 만하면 ./foo되므로 정의 된 명령 셸 인터프리터로 읽히고 파일을 정의 할 필요없이 실행됩니다.

ls -F파일을 나열하고 실행 파일을 *로 표시 합니다.

파일에서 실행 비트를 활성화하고 실행 가능하게하려면 명령을 사용하십시오 chmod +x foo.

귀하의 파일을 실행 파일로 만들려면 다음 명령을 사용하십시오

chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle

다음 중 하나를 사용하여 실행할 수 있습니다.

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle또는을 입력하면됩니다 sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.


12

Sh는 명령을 실행하기위한 쉘이므로 sudo와 함께 sh를 실행하면 루트 쉘이됩니다. 이는 해당 쉘의 모든 명령이 루트로 실행됨을 의미합니다. 내 생각에 스크립트는 루트가 필요한 다른 것을 실행하지만 sudo가 아닌 sudo sh 만 사용하면 다른 사용자는 일반 사용자로 실행되지만 sh를 사용하면 모든 것이 루트로 실행됩니다.


답변 주셔서 감사합니다. 저의 평판은 15 세 미만이므로 귀하의 답변에 투표 할 수 없습니다. 그러나 감사합니다!
Landy

1
받아 들여지는 대답은 좀 더 자세하지만 이것이 사람들이 알아야 할 핵심 포인트라고 생각합니다.
Christopher Hunter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.