Was bedeutet die Zeile "#! / Bin / sh" in einem UNIX Shell-Skript?
Ich war durch einige shell-Skript, tutorials, und fand das folgende Beispiel-Programm:
#!/bin/sh
clear
echo "HELLO WORLD"
Kann mir jemand bitte sagen, was ist die Bedeutung der Angabe '!/bin/sh
' in den Kommentar?
InformationsquelleAutor der Frage Jake | 2011-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es heißt, einen Kramund erzählt den Eltern-shell, welcher interpreter verwendet werden soll, um das Skript auszuführen.
z.B.
Es ist implementiert als Kommentar, so dass alles, was kommt in diese Zeile wird nicht "relevant" an den interpreter angegeben. z.B. alle scripting-Sprachen neigen dazu, zu verstehen, dass Sie eine Linie mit
#
ist ein Kommentar und wird ignoriert die!/usr/bin/whatever
Teil, die sonst einen syntax-Fehler in einer bestimmten Sprache.InformationsquelleAutor der Antwort Marc B
Wenn Sie versuchen, ein Programm ausführen, die in unix (mit dem executable-bit gesetzt), die das Betriebssystem Aussehen wird auf die ersten paar bytes der Datei. Diese bilden das sogenannte "Magische Zahl", die verwendet werden können, um zu entscheiden, das format des Programms und wie es auszuführen.
#!
entspricht der magischen Zahl 0x2321 (schauen Sie in einer ascii-Tabelle). Wenn das system erkennt, dass die Magische Zahl ist, weiß es, dass es den Umgang mit einem text-Skript und liest bis zum nächsten\n
(es gibt ein limit, aber es entgeht mir atm). Nach der Identifizierung der interpreter (das erste argument nach dem shebang) es ruft den Dolmetscher.Anderen Dateien auch haben "Magische zahlen". Versuchen Sie eine bitmap (.BMP) - Datei via
less
und Sie werden sehen, die ersten beiden Zeichen sindBM
. Diese Magische Zahl zeigt, dass die Datei tatsächlich ein bitmap.InformationsquelleAutor der Antwort Foo Bah
Wenn die Datei, die dieses Skript lebt in ausführbar ist, wird der hash-bang (
#!
) sagt dem Betriebssystem, was interpreter zu verwenden, um das Skript auszuführen. In diesem Fall ist es/bin/sh
zum Beispiel.Gibt es eine Wikipedia-Artikel darüber weitere Informationen.
InformationsquelleAutor der Antwort Kusalananda
Die erste Zeile teilt der shell mit, dass, wenn Sie das Skript ausführen, direkt (./run.sh; als Gegensatz zu /bin/sh run.sh sollte es das Programm (/bin/sh in diesem Fall) zu interpretieren.
Können Sie es auch verwenden, um Argumente, meist -e (exit on error), oder die Verwendung anderer Programme (/bin/awk /usr/bin/perl, usw).
InformationsquelleAutor der Antwort Kevin
#!/bin/sh
oder#!/bin/bash
erste Zeile des Skripts, denn wenn Sie es nicht verwenden in der ersten Zeile dann das system behandelt alle Befehle, die im Skript als unterschiedliche Befehle. Wenn die erste Zeile ist#!/bin/sh
dann betrachten alle Befehle als ein Skript und es wird sich zeigen, dass diese Datei ausgeführt wird, inps
Befehl und nicht die Kommandos in der Datei.InformationsquelleAutor der Antwort Sarvesh Pawar