Ich bin sehr neu in Bash und versuche, das erste Skript mit dem Namen hello_world
im Pfad von /Users/me/Study/Linux
mit dem von vim geschriebenen Inhalt:
#! bin/bash echo Hello World
Der Fehler tritt jedoch bei der Ausführung auf:
-bash: /Users/me/Study/Linux/hello_world: bin/bash: bad interpreter: No such file or directory
Ich habe viele Fragen zu diesem Problem gelesen, fühle mich aber immer noch völlig verloren. 🙁 Ich bin sehr dankbar für Ihre Hilfe.
Kommentare
- Versuchen Sie
#! /bin/bash
für die erste Zeile - @TedWrigley Danke, das funktioniert, aber warum?
- Der Shebang (#!) nimmt einen Pfad zu einer ausführbaren Datei, und unter Unix / Linux müssen die Pfade damit beginnen ein Schrägstrich.
Antwort
Die erste Zeile Ihres Bash-Skripts muss so aussehen.
#!/bin/bash
Dies wird als „shebang line“ bezeichnet, da die ersten beiden Zeichen #!
eine shebang . Die shebang-Zeile teilt dem Computer mit, mit welchem ausführbaren Programm der Rest des Skripts interpretiert werden soll. In diesem Fall schreiben Sie ein Bash-Skript, aber Sie können genauso gut ein schreiben Skript für Python oder awk, und Sie müssen dem System mitteilen, welcher Interpreter basierend auf der Sprache, in der das Skript geschrieben ist, verwendet werden soll.
Der Grund, warum Ihre Shebang-Zeile #! bin/bash
funktioniert nicht ist b Weil Sie dem Interpreter keinen gültigen Pfad (normalerweise einen absoluten Pfad ) angegeben haben. Wenn Sie den anfänglichen Schrägstrich /
weglassen, sucht die Shell im aktuellen Arbeitsverzeichnis nach bin
, findet ihn aber nicht. P. >
Da Sie gerade erst anfangen, Bash zu lernen, schlage ich vor, ein Buch zu lesen. So müssen Sie nicht zu viele Fragen stellen. Das Erlernen der Bash Shell, 3. Ausgabe von Cameron Newham ist ziemlich gut.
Kommentare
- Beachten Sie, dass das Leerzeichen nach
#!
unwichtig ist –#!/bin/bash
und#! /bin/bash
beide work und#!bin/bash
oder#! bin/bash
funktionieren nur, wenn Siecd /
zuerst (also wird bin gefunden ). Von Ihrem Wikipedia-Link " Leerzeichen nach! sind OK "