Aufzucht und Hege von Shell-Scripts: Shebang

Was soll diese komische "#!"-Zeile am Anfang eines Scripts?

Wenn die erste Zeile eines Scripts mit dem "Shebang" (also der Zeichenfolge #!) beginnt, dann ist der nachfolgende Pfad für den Kernel der Pfad des Interpreters, mit dem das Script ausgeführt werden soll. Fehlt die Zeile, dann wird das Script mit der Default-Shell des Systems (meist /bin/sh) ausgeführt. Die Zeile ist also nicht nur für Shell-Scripts wichtig, sondern für jede interpretierende Sprache (wie z. B. Perl, Tcl, Python, ...).

Das ist auch der Grund, warum man mit dieser Zeile aufpassen muss: Wenn Ihr ein Script schreibt, das eine bestimmte Shell voraussetzt, dann solltet Ihr hier auch diese Shell angeben, sonst wird unter Umständen die falsche Shell aufgerufen:

  jan@jack:~> ls -l /bin/sh
  lrwxrwxrwx  1 root root 4 2004-04-28 22:19 /bin/sh -> bash

  #! /bin/sh
  # bash wird nur dann aufgerufen, wenn der Link wie oben sitzt

  #! /bin/bash
  # bash wird aufgerufen

  #! /usr/bin/ksh
  # ksh wird aufgerufen