Apa perbedaan antara 'sudo [perintah]' dan 'sudo sh [perintah]?

13

Saya mencoba menginstal VMware Workstation di Ubuntu 12.04.2 LTS saya. Jika saya menjalankan perintah berikut:

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

selesai sekaligus dan instalasi tidak pernah dimulai.

Jika saya menjalankan perintah ini:

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

Pemasang dapat diluncurkan dengan sukses.

Mengapa ini membuat perbedaan?

Landy
sumber

Jawaban:

13

Jika file tidak ditandai sebagai executable, Anda perlu memanggil interpreter shell perintah untuk menjalankannya.

Contoh:

  • sudo sh fooakan membuka foo dengan shmenggunakan hak sudo .

  • sudo bash fooakan membuka foo dengan bashmenggunakan hak sudo .

  • sh fooakan membuka foo dengan shmenggunakan hak pengguna Anda.

  • bash fooakan membuka foo dengan bashmenggunakan hak pengguna Anda.

Jika Anda menandai file sebagai executable, Anda hanya perlu memanggilnya ./foodan karena itu ditandai maka file tersebut akan dibaca dengan interpreter shell perintah yang ditentukan dan dieksekusi tanpa perlu mendefinisikannya.

ls -Fakan mencantumkan file dan menandai executable dengan * .

Untuk mengaktifkan bit eksekusi pada file (dan membuatnya bisa dieksekusi seperti itu) gunakan perintah chmod +x foo.

Dalam kasus Anda untuk membuat file yang Anda gunakan dapat dieksekusi Anda akan menggunakan perintah

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

dan kemudian Anda akan dapat menjalankannya dengan baik

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleatau hanya dengan mengetik sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.

Bruno Pereira
sumber
12

Sh adalah shell untuk menjalankan perintah, jadi mengeksekusi sh dengan sudo memberi Anda root shell. Ini berarti semua perintah dalam shell dieksekusi sebagai root. Dugaan saya adalah skrip mengeksekusi sesuatu yang lain yang membutuhkan root, namun ketika Anda hanya menggunakan sudo bukan sudo sh, sesuatu yang lain dieksekusi sebagai pengguna normal, namun dengan sh semuanya akan dieksekusi sebagai root.

w4etwetewtwet
sumber
Terima kasih atas jawaban anda. Reputasi saya kurang dari 15 sehingga saya tidak dapat memilih jawaban Anda. Tapi ,,, Terima kasih, ANDA!
Landy
1
Jawaban yang diterima memiliki beberapa detail tetapi saya pikir ini benar-benar poin kunci yang harus diperhatikan orang.
Christopher Hunter