staging.inyokaproject.org

Shebang und das fehlende Raute Kommentar

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

blackbird Team-Icon

Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Hi,
Gibt es eigentlich eine Scriptsprache ohne Kommentare die mit Rauten eingeleitet werden?
Wenn ja, wie geht das Programm mit dem obligatorischen Shebang um?
Heißt das, dass Linux nur den Code nach dem Shebang dem Interpreter gibt, oder überlässt es ihm dem Code inkl. der ersten Zeile?

daniel311 Team-Icon

Anmeldungsdatum:
28. Oktober 2004

Beiträge: 182

Auf der bash wird der Shebang ausgelesen um den Interpreter zu starten. Dem Interpreter wird kein Dateiinhalt, sondern der Dateiname übergeben. Der Interpreter selbst wird die Zeile #! /irgendwas getrost ignorieren. Spezielle Kommentarzeilen wie # -*- coding: UTF8 -*- sind dann (im Falle python) schon interessanter. Man kann also davon ausgehen, dass dem Interpreter die gesamte ausführbare Datei "überlassen" wird. Was er daraus macht ist natürlich dann seine Angelegenheit.

Apollon

Avatar von Apollon

Anmeldungsdatum:
27. Oktober 2004

Beiträge: 724

Ich weiss nicht ob das weiterhilft aber so sieht z.B. ein Scheme-Shell-Skript aus.

":"; exec mzscheme -r $0 "$@"

(define argv-count (vector-length argv))

(let loop ((i 0))
  (unless (>= i argv-count)
    (display (vector-ref argv i))
    (newline)
    (loop (+ i 1))))

blackbird Team-Icon

(Themenstarter)
Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Apollon hat geschrieben:

Ich weiss nicht ob das weiterhilft aber so sieht z.B. ein Scheme-Shell-Skript aus.
<<Attachment>>

Jup. Interessiert mich. Abgesehen davon, dass ich LISP nicht ausstehen kann 😉 sieht es so aus, als fehle der Hash/Shebang.
Läuft das Skript direkt los wenn man es mit

./scriptname

aufruft?

Apollon

Avatar von Apollon

Anmeldungsdatum:
27. Oktober 2004

Beiträge: 724

Schwer zu beurteilen, da man sowas wie "Calling MzScheme to process <scriptname>" nicht zu sehen bekommt. 😉
Aber denke, es wird wohl so sein, dass die Shell (bei mir die BASH)
mzscheme aufruft und diesem als Parameter 0 (der erste, Scriptname) übergibt. MzScheme interpretiert diesen dann.

Oder so: Was meinst Du mit "direkt"?

blackbird Team-Icon

(Themenstarter)
Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Mit direkt meine ich kein mzscheme dateiname schreiben.
Es gibt einen Fehler, wenn man einen Shebang in die erste Zeile schreibt oder?

Antworten |