Was macht das Hinzufügen von sh?

10

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 sudomacht aber was macht sh? Ohne geht es "vmwareplayer.txt nicht gefunden". Und warum endet es bei Bundle-Dateien mit .txt?

Gabino Garcia
quelle
Es ist ein Sprachdolmetscher
Tachyons
@Tachyons Wenn Sie die Antwort auf die Frage kennen, erklären Sie sie genauer und posten Sie sie als Antwort! :)
Alvar
Siehe auch eine verwandte Frage mit Antworten, die ausführlich über Dolmetscher (wie sh, bash) und shebangs usw. erklärt werden
1
@Mik Dies ist kein Duplikat dieser Frage. Hier wird gefragt, was shin einem Befehl geschieht, der ein Skript aufruft. Bei dieser Frage geht es darum, wie ein in einer Skriptdatei#! funktioniert . Ganz anders.
Eliah Kagan
@EliahKagan Ja, ich war wahrscheinlich zu voreilig, um es als Duplikat zu zitieren: Ich hätte "verwandt, aber nicht doppelt" setzen sollen, wenn ich mich auf die andere Antwort bezogen hätte. Sie haben wie immer Recht; Wenn Sie einen Moderator bitten möchten, das Menü erneut zu öffnen, ist dies in Ordnung. Ich habe bereits für die Wiedereröffnung gestimmt.

Antworten:

15

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.

Gladen
quelle
5

In Ubuntu shoder zeigt /bin/shnur auf dash. shsoll den Standardbefehlsinterpreter ausführen, der dashfür Ubuntu ist. 1 dash bezieht sich auf die Debian Almquist-Shell.

Eine Shell ist ein Befehlszeileninterpreter für das System. Es gibt mehrere andere Muscheln wie bash, csh, zshusw. Hier ein kurzer Auszug aus Manpage von ist dash:

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

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, dashwird sie filefür Sie ausgeführt.

entzünden
quelle
Es ist eine gute Erklärung, was sh ist, aber nicht, was es in der spezifischen Frage oben tut.
NilsB
Weitere Informationen hinzugefügt, sollte es jetzt ausreichen
zünden Sie den
1

Nur ein Wort zum Kommentar:

sudoführt einen Befehl mit rootBerechtigungen aus. Wenn Sie aufrufen, sudo vmwareplayer.txtwas eindeutig "Befehl vmwareplayer.txt mit Root-Zugriff ausführen" bedeutet und fehlschlägt, weil es kein solches Programm gibt.

sudo sh commandbedeutet " sh commandmit Root-Rechten ausführen "

und sh commandfü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 manIhr bester Freund sind.

Melone
quelle
1

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 shbei 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.txtist es (normalerweise) möglich, etwas im selben Ordner auszuführen, wohingegen eine einfache Eingabe vmwareplayer.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 wie sudo sh vmwareplayer.txt. Ich hatte gehofft, jemand würde mitkommen und erklären, warum die Unterschale manchmal wünschenswert war.

Salz
quelle
0

Das shDienstprogramm 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

shivani1494
quelle