denne første linje (#!/ bin / bash eller #!/ bin / sh) har et navn. Det er kendt som’she-bang’ (shabang). Dette stammer fra sammenkædningen af tokens sharp ( # ) og bang (!). Det kaldes også som SH-bang, hashbang, poundbang eller hash-pling. I computing er en she-bang tegnsekvensen bestående af tegnets nummertegn og udråbstegn (#!) i begyndelsen af et script.
/bin/bash VS /bin/sh
vi har ofte set forskellige she-bang eller script header. Vi spekulerer ofte på, hvorfor bruger det pågældende script det pågældende she-bang, hvorfor ikke nogle andre. På unikke operativsystemer har vi et valg af flere skaller. Skallen er ansvarlig ikke kun for de små prompter, men også tolkning af kommandoerne i scriptet. Således spiller skallen en vigtig rolle specielt, når vi implementerer store og komplekse logikker ved hjælp af forhold, rør , sløjfer osv.
/bin/sh er en eksekverbar, der repræsenterer systemskallen og implementeres normalt som et symbolsk link, der peger på den eksekverbare, uanset hvilken skal der er systemskallen. Systemskallen er dybest set den standardskal, som scriptet skal bruge. I de sidste par år besluttede Debian (og Ubuntu) at skifte systemskallen fra bash til dash — en lignende skal, men lettere og meget hurtigere.
Dash er ret godt kompatibel med bash, der er baseret på den samme POSITIONSSTANDARD. Det implementerer dog ikke de bash-specifikke udvidelser. Standard er et bærbart operativsystem Interface, et forsøg på at standardisere unikke operativsystemer. Selvom Ubuntu ‘ s system shell peger på dash, fortsætter din login shell som bruger med at være bash på dette tidspunkt.
/bin / bash er den mest almindelige skal, der bruges som standardskal til brugerlogin af systemet. Shell ‘ s navn er et akronym for Bourne-Again shell. Bash kan udføre langt de fleste scripts og dermed er meget udbredt, fordi det har flere funktioner, er veludviklet og bedre syntaks.
HVAD ER DET ? / HVORFOR BRUGER VI DET?
#!/bin/bash
echo $(date) # Will print the output of date command
touch ~/output.txt
echo "Hey there" > ~/output.txt
lad os overveje et meget simpelt script som ovenfor. I ethvert enkleste tilfælde, hvis vi analyserer et shell-script, er det intet andet end en liste over kommandoer, der er gemt i en fil. Det reducerer vores indsats for at køre den samme opgave eller kommandoer igen og igen. Så hvis vi ser på begyndelsen af scriptet den første linje starter med en hash (#) og et udråbstegn (!). Som du allerede skal vide, at enhver linje , der starter med en hash ( # ), læses som en kommentar. Når vi udfører scriptet, læses den første linje som en kommentar, og tolk går til den anden linje. Men den første linje har allerede gjort det job.
i unikke operativsystemer, når et script starter med et she-bang(#!) udføres som et program, programmet loader analyserer resten af scriptet oprindelige linje som en tolk-direktiv. Således køres det specificerede tolkeprogram i stedet og passerer til det som et argument den sti, der oprindeligt blev brugt gennem scriptet.
Antag, at ethvert script starter med følgende linje:
#!/bin/sh
derefter instrueres programlæseren i at bruge /bin/sh-programmet i stedet for ethvert andet, der passerer stien til scriptet som det første argument.
i enkle ord fortæller she-bang i hovedet af scriptet systemet, at denne fil er et sæt kommandoer, der skal fodres til den angivne kommandotolk. Unikke operativsystemer har forskellige skaller, og hver af scripthovedlinjer kalder en anden kommandotolk.
nogle she-bang eksempler
#!/ bin / sh: udfører scriptet ved hjælp af Bourne shell eller en kompatibel shell, med path /bin/sh
#!/ bin / bash: udfører scriptet ved hjælp af Bash shell.
#!/ bin / csh-f :udfører scriptet ved hjælp af C shell eller en kompatibel shell.
#!/ usr / bin / perl-t: udfører scriptet ved hjælp af perl med mulighed for afsmag kontrol
#!/usr/bin / env python :Udfører scriptet ved hjælp af python ved automatisk at slå stien til python-tolken op fra miljøvariablerne
forhåbentlig har du bedre ide om, hvad she-bang er nu, og hvilket formål tjener det.