Mi a #! / Bin / bash a shell parancsfájlokban? Mi a különbség a / bin / sh és / bin / bash között? Miért van néhány esetben a shell szkript a sorok nélkül működik?


Legjobb válasz

#!/bin/bash

Ez shebang néven ismert, megmondja az értelmezőnek, hogy a következő sorok a bash-hoz vannak írva, ezért futtassa ezt a fájlt bash szkriptként.

#Example: Scripts are usually executed like below:

./scriptName

Tehát a shebang határozza meg a szkript értelmezésének módját, néha ez a következő lehet:

#!/bin/sh

#!//usr/bin/perl

#!/usr/bin/python

#!/bin/bash

#!/bin/ksh

Tehát ezek a sorok határozzák meg, hogyan kell a szkripteket használni értelmezni és végrehajtani. most a Miért /bin/sh?

Az egyik konfigurált héjra mutat, néha a sh bash, valamikor más shell, például cshell, dash,zsh ,ksh stb.

Példa:

#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

Tehát ha #!/bin/sh -t használ a szkriptben, akkor a szkript viselkedése attól függ, hogy melyik héj sh a rendszerére mutat. Ne feledje, hogy felülírhatja a shebangot a következő parancsfájl futtatásával:

bash scriptName

#or

sh scriptName

Két fenti esetben a shebang nem befolyásolja a végrehajtást, és ezt a bash és sh (a héj erre mutat).

Válasz

Nos, a” pontosan “hogyan működik sok részletességi szint, így itt elég pontatlanok leszünk. Az összes programot úgy hajtják végre, hogy kódjukat egy meghatározott, dedikált memóriarészbe teszik, majd meghívják a memóriában lévő kódkép belépési pontját. Ezt követően a program csak fut.

A kódkép memóriába helyezését az operációs rendszer végzi, és ezt hívjuk „indításnak” vagy a program végrehajtásának. Az operációs rendszer ezt csak egyszer, saját kezdeményezésére teszi; indításkor, amikor elindítja a init folyamatot. A init folyamat és annak leszármazói az exec meghívásával kérik az operációs rendszert más folyamatok elindítására. OS rendszerhívás.

A shell egyszerre különleges és egyben hétköznapi is. Ez csak egy másik program fut, mint minden más. Nincs különösebb szuperhatalma vagy különleges tulajdonsága. Célja, hogy a felhasználó hozzáférjen az operációs rendszer szolgáltatásaihoz, elsősorban más, a felhasználó által meghatározott programok elindításához. Felhasználó számára hozzáférhető módszereket biztosít, amelyek lehetővé teszik a felhasználó számára a fájlrendszer elérését, valamint annak meghatározását, hogy az adatkommunikáció egyes szabványos adatfolyamai miként kerülnek felhasználásra ( stdin , stdout és stderr ).

A héjak olyan programozási nyelvet biztosítanak, amelyhez használható automatizált módon, döntéseket hozva és iterálva végezzen dolgokat a hatékonyság érdekében, így a felhasználók interakciója nélkül működhetnek. Speciális szintaxist és jelölést biztosítanak és használnak, amelyet a felhasználónak meg kell tanulnia és használnia kell a programozási nyelv és a parancssori feldolgozás meghívására. A shell parancsok feldolgozása történhet interaktív terminálról vagy szkripteket tartalmazó szövegfájlokból.

A shell által elindított programokat a shell gyermek folyamatainak nevezzük. Bármely folyamat elindíthat egy másik folyamatot, így a héj ebben az értelemben nem különleges. A shell optimalizált, hogy a felhasználó megadhassa, hogyan indítsa el gyermekfolyamatait. A Linux állomás összes folyamatának heirarchiáját a

ps -e lf

paranccsal láthatja. maga a ps folyamat, amely a folyamat indításakor használt shell folyamat gyermekfolyamataként jelenik meg.

Ott sokkal több részlet; túl sok ahhoz, hogy a Quora válaszával foglalkozzon.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük