Bedste svar
#!/bin/bash
Dette kaldes shebang, det fortæller tolken, at følgende linjer er skrevet til bash, så udfør denne fil som bash-script.
#Example: Scripts are usually executed like below:
./scriptName
Så shebang bestemmer, hvordan man skal fortolke scriptet, nogle gange kan det være som følger:
#!/bin/sh
#!//usr/bin/perl
#!/usr/bin/python
#!/bin/bash
#!/bin/ksh
Så disse linjer bestemmer, hvordan scripts skal fortolkes og udføres. kommer nu til hvorfor /bin/sh
?
Det peger på en af den konfigurerede shell, nogle gange sh
peger på bash
, engang en anden skal som cshell, dash,zsh ,ksh
osv.
Eksempel:
#case-1:
ls -lrt /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
#case-2
ls -lrt /bin/sh
lrwxrwxrwx 1 root root 4 Jul 12 2017 /bin/sh -> bash
Så hvis du bruger #!/bin/sh
i dit script, vil adfærden af dit script variere afhængigt af hvilken shell sh
peger på dit system. Bemærk, at du kan tilsidesætte shebangen ved at køre dit script som:
bash scriptName
#or
sh scriptName
I ovenstående to tilfælde påvirker shebang ikke udførelsen, og det gøres af bash
og sh
(shell peget på dette).
Svar
Nå, nøjagtigt, hvordan de arbejder har mange detaljeringsniveauer, så vi bliver temmelig unøjagtige her. Alle programmer udføres ved at placere deres kode i et specifikt, dedikeret sektion af hukommelse og derefter påkalde indgangsstedet for det in-memory kode billede. Derefter kører programmet bare.
Handlingen med at sætte kodebilledet i hukommelsen udføres af operativsystemet og er det, vi kalder at starte eller udføre programmet. OS gør det på eget initiativ kun en gang; ved opstartstidspunktet, når det starter init -processen. init processen og dets efterkommere beder operativsystemet om at starte andre processer ved at påkalde exec OS-systemopkald.
Skallen er på én gang speciel og også almindelig. Det er bare et andet program, der kører, som ethvert andet. Det har ingen særlige superkræfter eller specielle egenskaber. Det har til formål at give brugeren adgang til OS-tjenesterne, primært til at starte andre programmer, som brugeren specificerer. Det giver brugertilgængelige metoder, der giver brugeren adgang til filsystemet og specificerer, hvordan nogle standardstrømme af datakommunikation bruges ( stdin , stdout og stderr ).
Skaller giver et programmeringssprog, der kan bruges til gøre tingene på automatiserede måder, tage beslutninger og gentage, for effektivitet, og så de kan arbejde uden brugerinteraktion. De leverer og bruger en særlig syntaks og notation, som brugeren skal lære og bruge til at påkalde programmeringssprog og kommandolinjebehandling. Behandlingen af shell-kommandoerne kan komme fra en interaktiv terminal eller fra tekstfiler, der indeholder scripts.
De programmer, som en shell starter, kaldes shell-processer. Enhver proces kan starte en anden proces, så skallen ikke er speciel i den forstand. Skallen er optimeret til at give brugeren mulighed for at specificere, hvordan man starter sine underordnede processer. Du kan se arvingen af alle processerne på en Linux-vært ved hjælp af kommandoen
ps -e lf
Et eller andet sted på listen finder du selve processen ps , og den vises som en underordnet proces af shell-processen, du brugte til at starte den.
Der er langt flere detaljer; alt for mange til at dække i et Quora-svar.