denna första raden (#!/ bin / bash eller #!/ bin / sh) har ett namn. Det är känt som ’she-bang'(shabang). Detta härrör från sammanfogningen av tokens sharp (#) och bang (!). Det kallas också som sh-bang, hashbang, poundbang eller hash-pling. I datoranvändning, en she-bang är teckensekvensen som består av tecken nummertecken och utropstecken (#!) i början av ett manus.
/bin / bash VS / bin / sh
vi har ofta sett olika she-bang eller script header. Vi undrar ofta varför just det skriptet använder just den she-bang, varför inte någon annan. På Unix – liknande operativsystem har vi ett urval av flera skal. Skalet ansvarar inte bara för de små anvisningarna utan tolkar också skriptets kommandon. Således spelar skalet en viktig roll speciellt när vi implementerar stora och komplexa logiker med förhållanden, rör, slingor etc.
/bin / sh är en körbar som representerar systemskalet och implementeras vanligtvis som en symbolisk länk som pekar på den körbara för vilket skal som är systemskalet. Systemskalet är i grunden standardskalet som skriptet ska använda. Under de senaste åren beslutade Debian (och Ubuntu) att byta systemskal från bash till dash — ett liknande skal men lättare och mycket snabbare.
Dash är ganska väl kompatibel med bash, baserat på samma POSIX-standard. Det implementerar dock inte de bash-specifika tilläggen. POSIX standard är portabelt Operativsystemgränssnitt, ett försök att standardisera UNIX-liknande operativsystem. Även om Ubuntus systemskal pekar på dash, fortsätter ditt inloggningsskal som användare att vara bash vid denna tidpunkt.
/bin/bash är det vanligaste skalet som används som standardskal för användarinloggning av linux-systemet. Skalets namn är en akronym för Bourne-again shell. Bash kan utföra de allra flesta skript och används därför ofta eftersom det har fler funktioner, är välutvecklad och bättre syntax.
VAD ÄR DET ? VARFÖR ANVÄNDER VI DET?
#!/bin/bash
echo $(date) # Will print the output of date command
touch ~/output.txt
echo "Hey there" > ~/output.txt
låt oss överväga ett mycket enkelt skript som ovan. I alla enklaste fall om vi analyserar ett skalskript är det inget annat än en lista med kommandon lagrade i en fil. Det minskar vår ansträngning att köra samma uppgift eller kommandon om och om igen. Så om vi tittar på början av manuset börjar den första raden med en hash ( # ) och ett utropstecken (!). Som du redan måste veta att någon rad som börjar med en hash ( # ), läses som en kommentar. Således när vi kör skriptet läses den första raden som en kommentar och tolk går till den andra raden. Men den första raden har redan gjort sitt jobb.
i Unix-liknande operativsystem när ett skript som börjar med en she-bang(#!) körs som ett program, analyserar programlastaren resten av skriptets första rad som tolkdirektiv. Således körs det angivna tolkprogrammet istället och skickar till det som ett argument den väg som ursprungligen användes genom skriptet.
Antag att ett skript börjar med följande rad:
#!/bin/sh
då instrueras programladdaren att använda/bin / sh-programmet istället för någon annan, som passerar skriptets väg som det första argumentet.
i enkla ord berättar she-bang i skriptets huvud systemet att den här filen är en uppsättning kommandon som ska matas till den angivna kommandotolken. Unix – liknande operativsystem har olika skal och var och en av skriptrubrikerna kallar en annan kommandotolk.
några she-bang exempel
#!/ bin / sh: kör skriptet med Bourne-skalet eller ett kompatibelt skal, med sökväg /bin/sh
#!/ bin / bash: kör skriptet med Bash-skalet.
#!/ bin / csh-f :kör skriptet med C-skal eller ett kompatibelt skal.
#!/usr / bin / perl-t :kör skriptet med perl med möjlighet till taint-kontroller
#!/usr / bin / env python :Kör skriptet med python genom att leta upp sökvägen till python-tolken automatiskt från miljövariablerna
förhoppningsvis har du bättre uppfattning om vad she-bang är nu och vilket syfte tjänar det.