Ich bin wirklich neu in der Verwendung von Terminal und habe die Anleitung blind befolgt, ohne zu wissen, warum das so ist und was es tut. Diese Anleitung hilft mir jedoch bei der Installation des VMware-Players.
Dieser hat für mich funktioniert, da die Datei ausführbar gemacht, auf die Datei geklickt und ausgeführt wurde. Sagen wir nur, dass Root-Zugriff erforderlich ist.
sudo sh vmwareplayer.txt
(umbenannt in kürzer)
Irgendwie weiß ich was sudo
macht aber was macht sh
? Ohne geht es "vmwareplayer.txt nicht gefunden". Und warum endet es bei Bundle-Dateien mit .txt?
command-line
Gabino Garcia
quelle
quelle
sh
in einem Befehl geschieht, der ein Skript aufruft. Bei dieser Frage geht es darum, wie ein in einer Skriptdatei#!
funktioniert . Ganz anders.Antworten:
sh steht für "shell" und shell ist der alte, Unix-ähnliche Befehlszeileninterpreter. Ein Interpreter ist ein Programm, das bestimmte Anweisungen ausführt, die in einer Programmier- oder Skriptsprache geschrieben sind. Sie sagen also im Grunde "Führen Sie diese Datei für mich aus".
Sie müssen verstehen, dass Linux die Dateierweiterung nicht wirklich überprüft, um festzustellen, um welche Datei (oder welches Programm) es sich handelt. Solange der Inhalt dieser Datei so geschrieben ist, dass der sh-Interpreter es versteht, funktioniert es. Aber nur aus Gründen der Lesbarkeit erhalten solche Dateien normalerweise die Erweiterung .sh, und ich habe keine Ahnung, was der Entwickler gedacht hat, als er dieser Datei die Erweiterung .txt gegeben hat.
quelle
In Ubuntu
sh
oder zeigt/bin/sh
nur aufdash
.sh
soll den Standardbefehlsinterpreter ausführen, derdash
für Ubuntu ist. 1dash
bezieht sich auf die Debian Almquist-Shell.Eine Shell ist ein Befehlszeileninterpreter für das System. Es gibt mehrere andere Muscheln wie
bash
,csh
,zsh
usw. Hier ein kurzer Auszug aus Manpage von istdash
:Es gibt viele Tutorials zu Linux-Shells. Sie können mit diesem Wikipedia-Artikel beginnen .
Wenn Sie zu Ihrer Frage kommen und diese schreiben
sh file
,dash
wird siefile
für Sie ausgeführt.quelle
Nur ein Wort zum Kommentar:
sudo
führt einen Befehl mitroot
Berechtigungen aus. Wenn Sie aufrufen,sudo vmwareplayer.txt
was eindeutig "Befehl vmwareplayer.txt mit Root-Zugriff ausführen" bedeutet und fehlschlägt, weil es kein solches Programm gibt.sudo sh command
bedeutet "sh command
mit Root-Rechten ausführen "und
sh command
führt einen Befehl unter der Bourne-Shell aus.Neue Frage stellt sich. Was sind Muscheln? Dies ist eine längere Frage und Sie werden einige Informationen im Wiki finden, nehme ich an.
Denken Sie in der Zwischenzeit daran, dass Sie
man
Ihr bester Freund sind.quelle
Ich glaube, dass keiner der früheren Antwortenden die Frage beantwortet hat, die Sie G. tatsächlich gestellt haben, also werde ich es versuchen. Zwischen die
sh
bei der Ausführung eines Programms wie Sie bereits erwähnt, führt das Programm in einer nicht-interaktiven Subshell. Nicht interaktive Shells verhalten sich anders (z. B. Initialisierung ) als die interaktive Standard-Shell, die Sie beim Ausführen des Programms verwendet haben.Ehrlich gesagt weiß ich nicht, welche praktischen Auswirkungen dies hat. Wie Sie bemerkt haben,
sh vmwareplayer.txt
ist es (normalerweise) möglich, etwas im selben Ordner auszuführen, wohingegen eine einfache Eingabevmwareplayer.txt
(normalerweise) dies nicht tut . Das muss Shell-Umgebung tun; Es ist keine Qualität, die für die Shell oder Subshell selbst typisch ist. Sie können natürlich ein Programm im aktuellen Verzeichnis direkt als root ausführen :sudo ./vmwareplayer.txt
. Nach meiner Erfahrung funktioniert das immer genauso gut wiesudo sh vmwareplayer.txt
. Ich hatte gehofft, jemand würde mitkommen und erklären, warum die Unterschale manchmal wünschenswert war.quelle
Das
sh
Dienstprogramm ist ein Befehlsspracheninterpreter / ein Befehl, der Befehle ausführt, die aus einer Befehlszeilenzeichenfolge, der Standardeingabe oder einer angegebenen Datei gelesen werden. Die Anwendung stellt sicher, dass die auszuführenden Befehle in der unter Shell Command Language beschriebenen Sprache ausgedrückt werden.Beispielsweise:
Das Folgende führt einen Shell-Befehl aus einer Zeichenfolge aus:
sh -c "cat myfile.txt"
dh führt den Befehl aus--cat myfile.txt
Ausführliche Erläuterungen finden Sie unter folgendem Link: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
quelle