www.wikidata.de-de.nina.az
Shebang oder Hash Bang bezeichnet die Zeichenkombination am Anfang eines Skriptprogramms ahnlich einer Dokumenttypdefinition Bei unixoiden Betriebssystemen fuhrt die Markierung mit Doppelkreuz und Ausrufezeichen dazu dass das folgende Kommando mitsamt allen angegebenen Argumenten beim Aufruf des Programms ausgefuhrt wird Der Dateiname wird dann als weiteres Argument ubergeben Inhaltsverzeichnis 1 Etymologie 2 Geschichte 3 Implementierung 4 Verwendung 5 Probleme 5 1 Speicherort 5 2 Windows 5 3 Shebang als Sonderform eines Kommentars in der Skriptsprache 5 4 Unicode Byte Order Mark am Dateianfang 6 Siehe auch 7 Einzelnachweise 8 WeblinksEtymologie BearbeitenDer Begriff Shebang stammt mit ziemlich hoher Sicherheit aus dem Amerika des 19 Jahrhunderts Der Ausdruck bezeichnet ursprunglich wahrscheinlich entweder eine Hutte Unterkunft oder auch ein Zelt eventuell einen Ort wo unlizenzierter Alkohol getrunken wird irisch Shebeen Ab Mitte des 19 Jahrhunderts bezeichnet der Begriff aber auch eine Pferdekutsche so verwendet zum Beispiel von Mark Twain Shebang wird aber seit uber 150 Jahren im Normalfall innerhalb des Ausdrucks the whole shebang verwendet was grob ubersetzt Kram Sache Angelegenheit bedeutet Dies scheint von running the whole shebang herzustammen einem Ausdruck der im spaten amerikanischen Burgerkrieg im Zusammenhang mit Quartiermeistern entstand Im Unix Kontext wird es als Verkurzung von sharp bang oder hash bang gedeutet was sich auf die zwei Anfangszeichen bezieht Im Unix Jargon wird das Ausrufezeichen als bang und das Doppelkreuz als hash oder auch sharp bezeichnet Geschichte BearbeitenDer Mechanismus wurde in seiner ursprunglichen Form eingefuhrt um Shellskript Dateien fur die unterschiedlichen Unix Shells sh und csh voneinander unterscheiden zu konnen Dabei wurde anhand des ersten Zeichens der Datei entschieden wenn es entweder oder lautete Dies sind Zeichen die in der jeweiligen Skriptsprache entweder Kommentare einleiten oder im Fall von den Aufruf einer leeren Funktion NOP darstellen und daher ohne Beeintrachtigung der Funktionalitat des Skriptes in die Dateien eingebaut werden konnen Der Shebang wurde von Dennis Ritchie in der Zeit zwischen den Unix Versionen 7 und 8 der Bell Laboratories eingefuhrt In derselben Zeit wurde es in BSD Unix ubernommen 1 Da Version 8 des Unix von Bell nicht mehr veroffentlicht wurde wurde der Shebang erst durch BSD in grossem Stil bekannt Implementierung BearbeitenDie Shebang Zeichen stellen eine im ASCII Zeichensatz fur Menschen lesbare Form einer magischen Zahl fur ausfuhrbare Programme dar der magische String entspricht hexadezimal 0x23 0x21 Damit kann der Betriebssystemkern die Datei bereits als Skript erkennen und mit dem angegebenen Interpreter ausfuhren Das Skript gilt auf diese Weise als nahezu vollwertiges Programm und kann als solches im Betriebssystem aufgerufen werden Verwendung Bearbeiten nbsp Ein Hallo Welt Programm in Perl Die erste Zeile enthalt den Pfad zum Interpreter sowie ein Argument w Eine typische Shebang Zeile sieht so aus bin sh Diese Zeile weist das Betriebssystem an diese Datei mit dem Interpreter Programm bin sh auszufuhren in diesem Fall also der Standard Unix Shell Die Shebang Zeile bin cat macht ein Programm zu einem unechten Quine das seinen Inhalt auf die Standardausgabe ausgibt indem es seinen Namen dem Programm a href Cat Unix html title Cat Unix cat a ubergibt Probleme BearbeitenSpeicherort Bearbeiten Einige Speicherorte sind im Filesystem Hierarchy Standard FHS normiert sodass FHS konforme Unix artige Systeme die entsprechende Programme oder symbolische Verknupfungen darauf am normierten Pfad vorhalten mussen So ist eine POSIX kompatible Unix Shell immer unter bin sh Jedoch sind nicht alle Unix Derivate FHS konform und der Speicherort fur weitere Interpreter ist nicht normiert Daher kann es notwendig sein die shebang Zeile zu andern wenn ein Skript von einem Computer zu einem anderen kopiert wird Um hier Abhilfe zu schaffen kann man das Programm a href Env html title Env env a benutzen usr bin env python env startet das gewunschte Programm hier Python unabhangig vom Speicherort indem es die Standard Umgebungsvariablen der Betriebssystemkonfiguration ladt und damit auch die Umgebungsvariable PATH und dann nach dem Programm python in diesen Programmpfaden sucht Auf diese Weise findet es in diesem Beispiel den Pythoninterpreter unter usr bin python Allerdings ist auch env nicht auf jedem System installiert und nicht unbedingt immer an derselben Stelle zu finden Ist der Speicherort unklar konnen auch die Kommandozeilen Befehle type command v oder which weiterhelfen user localhost type python python is usr bin python Windows Bearbeiten Windows kennt das Shebang grundsatzlich nicht Werden aber Programmpakete die fur Windows und Unix gleichermassen entwickelt wurden unter Windows installiert so interpretieren oft einige Programmteile das Shebang So versteht beispielsweise der Apache Webserver Shebangs wenn er CGI Skripte aufruft Hier ein mogliches Beispiel wie ein Python Skript von Apache aufgerufen wird C Programme und Anwendungen Python 2 48 bin python exe Shebang als Sonderform eines Kommentars in der Skriptsprache Bearbeiten Durch die Verwendung des Shebangs konnen theoretisch beliebige Interpreter aufgerufen werden denen dann das gesamte Script zur Verarbeitung ubergeben wird Die Verwendung des Shebangs als Aufruf fur den Interpreter ist allerdings nur dann moglich wenn das Shebang von diesem ignoriert wird da diese keine Anweisung fur den Interpreter selbst enthalt Durch das Doppelkreuz wird das Shebang in vielen Skriptsprachen als Kommentar bewertet und damit ignoriert Alternativ konnte der Interpreter immer die erste Zeile uberspringen Bei gangigen Sprachen wie Ruby Perl Python oder PHP ist dies der Fall da sie das Doppelkreuz fur Zeilenkommentare verwenden Andere Sprachen hingegen verwenden andere Zeichen fur Zeilen Kommentare REXX Interpreter beispielsweise sehen dieses Zeichen allgemein als Syntaxfehler an Aus diesem Grund sind nicht beliebige Interpreter fur den Aufruf uber den Shebang geeignet Mitunter adressiert das Shebang einen Praprozessor der die Zeile auswertet entfernt und den Rest an einen Interpreter oder Compiler ubergibt Dies ist beispielsweise bei InstantFPC der Fall einem Kommando das die Ausfuhrung von Pascalskripten mit Free Pascal unter verschiedenen Betriebssystemen erlaubt 2 Obwohl Pascal das Zeichen nicht als Kommentarkennzeichen verwendet werden die Skripte fehlerfrei kompiliert und ausgefuhrt da InstantFPC die Shebangzeile entfernt und sonstige Parameter extrahiert Ab Version 0 9 31 erkennt auch Lazarus die Shebangzeile 2 In der Lisp Variante Scheme und in D ist das Doppelkreuz zwar allgemein kein Kommentar aber die Shebang Zeile wird vom Compiler als erste Zeile speziell ignoriert 3 4 Unicode Byte Order Mark am Dateianfang Bearbeiten Skriptdateien enthalten Text und zahlen zu den Textdateien Textdateien in Unicode Kodierung beginnen oft mit einer Byte Order Markierung BOM Steht eine solche BOM am Anfang einer Skriptdatei also vor der Shebang Konstruktion dann wird die Shebang Konstruktion unter Umstanden nicht erkannt auch diese muss per Definition am Anfang stehen Daher sollte bei Skripten die ein Shebang nutzen auf eine BOM am Dateianfang verzichtet werden Siehe auch BearbeitenErkennung des korrekten Interpreters bei Binardateien unter Linux binfmt miscEinzelnachweise Bearbeiten Archivauszug von 1980 auf in ulm de bereits vorhanden in Version 4BSD und standardmassig aktiviert in Version 4 2BSD a b Deutsche Dokumentation zu InstantFPC SRFI 22 The D Language Foundation D Programming Language Specification PDF 1 46 MB Nicht mehr online verfugbar S 5 archiviert vom Original am 3 Oktober 2017 abgerufen am 17 Oktober 2017 englisch nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot dlang org Weblinks BearbeitenDetails about the shebang mechanism on various Unix flavours englisch Aus dem Jargon File shebang englisch Definition des Wortes im Webster s Dictionary shebang englisch the Unix truth as far as I know it umfassender Artikel uber den Shebang englisch Abgerufen von https de wikipedia org w index php title Shebang amp oldid 230412466