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:
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 mitsh
mit sudo - Privilegien.sudo bash foo
öffnet foo mitbash
mit sudo - Privilegien.sh foo
öffnet foo untersh
Verwendung der Berechtigungen Ihres Benutzers.bash foo
öffnet foo unterbash
Verwendung der Berechtigungen Ihres Benutzers.Wenn Sie eine Datei als ausführbar markieren, müssen Sie sie nur mit aufrufen.
./foo
Da sie als solche gekennzeichnet ist, wird sie mit dem definierten Befehls-Shell-Interpreter gelesen und ausgeführt, ohne dass eine definiert werden muss.ls -F
listet 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.bundle
oder einfach durch Tippensudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle
.quelle
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.
quelle