อะไรคือความแตกต่างระหว่าง 'sudo [command]' และ 'sudo sh [command]?


13

ฉันพยายามติดตั้ง VMware Workstation ใน Ubuntu 12.04.2 LTS ถ้าฉันรันคำสั่งต่อไปนี้:

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

มันจะเสร็จสิ้นในครั้งเดียวและการติดตั้งจะไม่เริ่มขึ้น

ถ้าฉันรันคำสั่งนี้:

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

สามารถติดตั้งโปรแกรมติดตั้งได้สำเร็จ

ทำไมสิ่งนี้ถึงสร้างความแตกต่าง?


เกี่ยวข้อง: askubuntu.com/questions/141928/ …
Takkat

มีความเกี่ยวข้องเช่นกัน: askubuntu.com/questions/70534/…
Nanne

คำตอบ:


13

หากไฟล์ไม่ได้ถูกทำเครื่องหมายว่าสามารถเรียกใช้งานได้คุณต้องเรียกใช้ตัวแปลคำสั่งเชลล์เพื่อดำเนินการ

ตัวอย่าง:

  • sudo sh fooจะเปิดfooด้วยการshใช้สิทธิ์sudo

  • sudo bash fooจะเปิดfooด้วยการbashใช้สิทธิ์sudo

  • sh fooจะเปิดfooด้วยการshใช้สิทธิ์ของผู้ใช้

  • bash fooจะเปิดfooด้วยการbashใช้สิทธิ์ของผู้ใช้

หากคุณทำเครื่องหมายไฟล์ว่าสามารถเรียกใช้งานได้คุณเพียงแค่เรียกมันด้วย./fooและเพราะมันถูกทำเครื่องหมายเช่นนั้นมันจะถูกอ่านด้วยล่ามคำสั่งเชลล์ที่กำหนดไว้และดำเนินการโดยไม่จำเป็นต้องกำหนดหนึ่งไฟล์

ls -Fจะแสดงรายการไฟล์และ executables เครื่องหมายด้วย*

ต้องการเปิดใช้งานบิตดำเนินการเกี่ยวกับไฟล์ (และทำให้ปฏิบัติการดังกล่าว) chmod +x fooใช้คำสั่ง

ในกรณีของคุณเพื่อให้ไฟล์ที่คุณใช้ปฏิบัติการคุณจะต้องใช้คำสั่ง

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

จากนั้นคุณจะสามารถเรียกใช้ได้ด้วย

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundlesudo ./VMware-Workstation-9.0.1-894247.x86_64.bundleหรือเพียงแค่พิมพ์


12

Sh คือเชลล์สำหรับการรันคำสั่งดังนั้นการรัน sh ด้วย sudo จะให้รูทเชลล์แก่คุณ ซึ่งหมายความว่าคำสั่งทั้งหมดในเชลล์นั้นจะถูกดำเนินการเป็นรูท ฉันเดาว่าสคริปต์ดำเนินการอย่างอื่นที่ต้องการรูท แต่เมื่อคุณใช้ sudo ไม่ใช่ sudo sh เท่านั้นก็มีบางสิ่งที่ได้รับการดำเนินการในฐานะผู้ใช้ปกติ แต่ด้วย sh ทุกอย่างจะถูกเรียกใช้เป็นรูท


ขอบคุณสำหรับคำตอบ. ชื่อเสียงของฉันน้อยกว่า 15 ปีดังนั้นฉันจึงไม่สามารถโหวตคำตอบของคุณได้ แต่ ,,, ขอขอบคุณ!
Landy

1
คำตอบที่ได้รับการยอมรับมีรายละเอียดเพิ่มเติม แต่ฉันคิดว่านี่เป็นประเด็นสำคัญที่ผู้คนควรระวัง
Christopher Hunter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.