deze eerste regel (#!bin bash of#!/bin / sh) heeft een naam. Het staat bekend als’she-bang’ (shabang). Dit komt voort uit de aaneenschakeling van de tokens sharp ( # ) en bang (!). Het wordt ook wel sh-bang, hashbang, poundbang of hash-pling genoemd. In de computerwereld is een she-bang de tekenreeks die bestaat uit het cijferteken en het uitroepteken (#!) aan het begin van een script.
/ bin /bash VS / bin / sh
we hebben vaak verschillende she-bang of script header gezien. We vragen ons vaak af waarom dat specifieke script met behulp van die specifieke she-bang, waarom niet een andere. Op Unix-achtige besturingssystemen hebben we de keuze uit meerdere shells. De shell is niet alleen verantwoordelijk voor de kleine prompts maar ook voor het interpreteren van de commando ‘ s van het script. Zo speelt de schaal een belangrijke rol, vooral bij het implementeren van grote en complexe logica ‘ s met behulp van condities, leidingen, lussen , enz.
/ bin / sh is een uitvoerbaar bestand dat de systeemshell vertegenwoordigt en meestal wordt geà mplementeerd als een symbolische link die naar het uitvoerbare bestand wijst voor welke shell ook de systeemshell is. De systeem shell is in principe de standaard shell die het script zou moeten gebruiken. In de afgelopen paar jaar, Debian (en Ubuntu) besloten om de systeem shell van bash naar dash — een soortgelijke shell, maar lichter en veel sneller.
Dash is vrij goed compatibel met bash, gebaseerd op dezelfde POSIX-standaard. Het implementeert echter niet de bash-specifieke extensies. POSIX standard is Portable Operating System Interface, een poging om UNIX-achtige besturingssystemen te standaardiseren. Hoewel Ubuntu ‘ s systeem shell verwijst naar dash, uw login shell als gebruiker blijft bash op dit moment.
/ bin / bash is de meest voorkomende shell die gebruikt wordt als standaard shell voor het inloggen van gebruikers op het linux systeem. De naam van de shell is een acroniem voor Bourne-again shell. Bash kan de overgrote meerderheid van scripts uitvoeren en wordt dus veel gebruikt omdat het meer functies heeft, goed is ontwikkeld en een betere syntaxis.
WAT IS HET ? WAAROM GEBRUIKEN WE HET?
#!/bin/bash
echo $(date) # Will print the output of date command
touch ~/output.txt
echo "Hey there" > ~/output.txt
laten we een heel eenvoudig script als hierboven beschouwen. In elk simpel geval als we een shell script analyseren, is het niets anders dan een lijst van commando ‘ s die in een bestand zijn opgeslagen. Het vermindert onze inspanning om dezelfde taak of commando ‘ s opnieuw en opnieuw uit te voeren. Dus als we naar het begin van het script kijken begint de eerste regel met een hash (#) en een uitroepteken (!). Zoals je al moet weten dat elke regel die begint met een hash (#) , wordt gelezen als een commentaar. Dus wanneer we het script uitvoeren, wordt de eerste regel gelezen als een commentaar en interpreter gaat naar de tweede regel. Maar de eerste regel heeft zijn werk al gedaan.
In Unix – achtige besturingssystemen wanneer een script begint met een she-bang (#!) wordt uitgevoerd als een programma, de programma loader ontleedt de rest van de oorspronkelijke regel van het script als een interpreter-directive. Dus het opgegeven interpreter programma wordt uitgevoerd in plaats daarvan, het doorgeven van het pad dat in eerste instantie werd gebruikt door het script.
stel dat elk script met de volgende regel begint:
#!/bin/sh
daarna wordt de programma-Lader geïnstrueerd om het /bin/sh programma te gebruiken in plaats van een ander, waarbij het pad van het script als eerste argument wordt doorgegeven.
in eenvoudige woorden, de she-bang aan het hoofd van het script vertelt het systeem dat dit bestand een set commando ‘ s is die aan de aangegeven opdrachtinterpreter moeten worden ingevoerd. Unix-achtige besturingssystemen heeft verschillende shells en elk van script header regels roepen een andere opdracht interpreter.
enkele voorbeelden van she-bang
#!/bin / sh :voert het script uit met de Bourne shell of een compatibele shell, Met Pad/bin / sh
#!/ bin / bash: voert het script uit met behulp van de Bash shell.
#!/ bin / csh-f :voert het script uit met behulp van een C shell of een compatibele shell.
#!/usr/bin / perl-T :voert het script uit met perl met de optie taint checks
#!/usr/bin / env python :Voert het script uit met behulp van python door het pad naar de Python-interpreter automatisch op te zoeken vanuit de omgevingsvariabelen
hopelijk heb je een beter idee van wat she-bang nu is en welk doel het dient.