Was ist der Unterschied zwischen 'sudo [Befehl]' und 'sudo sh [Befehl]?


13

Ich versuche, VMware Workstation in meinem Ubuntu 12.04.2 LTS zu installieren. Wenn ich den folgenden Befehl ausführe:

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

Es wird sofort beendet und die Installation beginnt nie.

Wenn ich diesen Befehl ausführe:

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

Das Installationsprogramm kann erfolgreich gestartet werden.

Warum macht das einen Unterschied?



Antworten:


13

Wenn die Datei nicht als ausführbar markiert ist, müssen Sie einen Befehls-Shell-Interpreter aufrufen, um sie auszuführen.

Beispiele:

  • sudo sh fooöffnet foo mit shmit sudo - Privilegien.

  • sudo bash fooöffnet foo mit bashmit sudo - Privilegien.

  • sh fooöffnet foo unter shVerwendung der Berechtigungen Ihres Benutzers.

  • bash fooöffnet foo unter bashVerwendung der Berechtigungen Ihres Benutzers.

Wenn Sie eine Datei als ausführbar markieren, müssen Sie sie nur mit aufrufen. ./fooDa sie als solche gekennzeichnet ist, wird sie mit dem definierten Befehls-Shell-Interpreter gelesen und ausgeführt, ohne dass eine definiert werden muss.

ls -Flistet Dateien auf und markiert ausführbare Dateien mit * .

Verwenden Sie den Befehl, um das Ausführungsbit für eine Datei zu aktivieren (und als solche ausführbar zu machen) chmod +x foo.

In Ihrem Fall würden Sie den Befehl verwenden, um die Datei, die Sie verwenden, ausführbar zu machen

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

und dann können Sie es mit beiden ausführen

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleoder einfach durch Tippen sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.


12

Sh ist eine Shell zum Ausführen von Befehlen. Wenn Sie also sh mit sudo ausführen, erhalten Sie eine Root-Shell. Dies bedeutet, dass alle Befehle in dieser Shell als root ausgeführt werden. Ich vermute, dass das Skript etwas anderes ausführt, das root benötigt. Wenn Sie jedoch nur sudo und nicht sudo sh verwenden, wird etwas anderes als normaler Benutzer ausgeführt. Mit sh wird jedoch alles als root ausgeführt.


Danke für deine Antwort. Mein Ruf ist weniger als 15, daher kann ich nicht für Ihre Antwort stimmen. Aber ,,, Danke DICH!
Landy

1
Die akzeptierte Antwort enthält einige Details, aber ich denke, dies ist wirklich ein wichtiger Punkt, dessen sich die Leute bewusst sein sollten.
Christopher Hunter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.