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?
Jawaban:
Jika file tidak ditandai sebagai executable, Anda perlu memanggil interpreter shell perintah untuk menjalankannya.
Contoh:
sudo sh foo
akan membuka foo dengansh
menggunakan hak sudo .sudo bash foo
akan membuka foo denganbash
menggunakan hak sudo .sh foo
akan membuka foo dengansh
menggunakan hak pengguna Anda.bash foo
akan membuka foo denganbash
menggunakan hak pengguna Anda.Jika Anda menandai file sebagai executable, Anda hanya perlu memanggilnya
./foo
dan karena itu ditandai maka file tersebut akan dibaca dengan interpreter shell perintah yang ditentukan dan dieksekusi tanpa perlu mendefinisikannya.ls -F
akan 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.bundle
atau hanya dengan mengetiksudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
.sumber
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.
sumber