Hvad er #! / Bin / bash i shell-scripting? Hvad er forskellen mellem / bin / sh og / bin / bash? Hvorfor fungerer shell-scriptet nogle gange uden linjerne?


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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *