kétféle módon lehet futtatni egy shell szkriptet Linuxban. Használhatja:
bash script.sh
vagy végrehajthatja a shell szkriptet így:
./script.sh
ez talán egyszerű, de nem sok mindent magyaráz meg. Ne aggódjon, megteszem a szükséges magyarázatokat példákkal, hogy megértse, miért használnak egy adott szintaxist az adott formátumban egy shell szkript futtatása közben.
ezt az egysoros shell szkriptet fogom használni, hogy a dolgok a lehető legegyszerűbbek legyenek:
:~/Scripts$ cat hello.sh echo "Hello World!"
1. módszer: shell parancsfájl futtatása úgy, hogy a fájlt argumentumként átadja a shellnek
az első módszer magában foglalja a szkriptfájl nevének argumentumként történő átadását a shellnek.
figyelembe véve, hogy a bash az alapértelmezett shell, futtathat egy ilyen szkriptet:
bash hello.sh
ismeri ennek a megközelítésnek az előnyeit? A szkriptnek nem kell rendelkeznie a végrehajtási engedéllyel. Nagyon praktikus a gyors és egyszerű feladatokhoz.
ha még nem ismeri, azt tanácsolom, hogy olvassa el a Linux Fájl engedélyével kapcsolatos részletes útmutatómat.
ne feledje, hogy egy shell szkriptnek kell lennie, amelyet argumentumként ad át. A shell parancsfájl parancsokból áll. Ha normál szöveges fájlt használ, akkor panaszkodik a helytelen parancsokról.
ebben a megközelítésben kifejezetten megadta, hogy a parancsfájl értelmezőjeként bash-t szeretne használni.
a Shell csak egy program, a bash pedig annak megvalósítása. Vannak más ilyen héjprogramok is, mint a ksh, zsh stb. Ha más héjak vannak telepítve, akkor ezt is használhatja a bash helyett.
például telepítettem a zsh-t, és ugyanazt a szkriptet futtattam:
ajánlott olvasmány:
2. módszer: hajtsa végre a shell parancsfájlt az elérési út megadásával
a shell parancsfájl futtatásának másik módja az elérési út megadása. De ahhoz, hogy ez lehetséges legyen, a fájlnak végrehajthatónak kell lennie. Ellenkező esetben az” engedély megtagadva ” hiba lép fel, amikor megpróbálja végrehajtani a szkriptet.
tehát először meg kell győződnie arról, hogy a szkript rendelkezik a végrehajtási engedéllyel. A chmod paranccsal megadhatja magának ezt az engedélyt:
chmod u+x script.sh
miután a szkript végrehajtható, csak annyit kell tennie, hogy beírja a fájlnevet annak abszolút vagy relatív elérési útjával együtt. Leggyakrabban ugyanabban a könyvtárban van, így csak így használja:
./script.sh
ha nem ugyanabban a könyvtárban van, mint a szkript, megadhatja a szkript abszolút vagy relatív elérési útját:
azt ./ mielőtt a szkript fontos (ha ugyanabban a könyvtárban van, mint a szkript)
miért nem használhatja a szkript nevét, ha ugyanabban a könyvtárban van? Ez azért van, mert a Linux rendszerek keresi a futtatható futtatni néhány kiválasztott könyvtárakat, amelyek meg vannak adva a PATH változó.
itt van a PATH változó értéke a rendszeremhez:
:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ez azt jelenti, hogy a következő könyvtárak egyikében végrehajtási engedélyekkel rendelkező fájlok a rendszer bármely pontjáról végrehajthatók:
- /otthon / abhishek/.helyi/kuka
- /usr/helyi/kuka
- /usr/helyi/kuka
- /usr/kuka
- /usr/kuka
- /sbin
- /bin
- /bin
- /usr/local/games
- /snap/bin
a Linux parancsok binárisai vagy futtatható fájljai, mint például az ls, Cat stb, Ezen könyvtárak egyikében találhatók. Ez az, amiért meg tudja futtatni ezeket a parancsokat bárhonnan a rendszer csak használja a nevüket. Lásd: az ls parancs a /usr/bin könyvtárban található.
ha a parancsfájlt abszolút vagy relatív elérési út nélkül adja meg, akkor az nem található meg a PATH változóban említett könyvtárakban.
miért tartalmaz a legtöbb shell szkript #! / bin / bash a shell szkriptek elején?
ne feledje, hogyan említettem, hogy a shell csak egy program, és a shelleknek különböző implementációi vannak.
amikor a #! / bin / bash, akkor adja meg, hogy a script futtatni bash mint tolmács. Ha ezt nem teszed meg, és futtatsz egy szkriptet .forgatókönyv.sh módon, ez általában fut bármilyen shell fut.
számít ez? Lehet. Lát, a legtöbb shell szintaxis gyakori mindenféle shell, de néhány eltérhet.
például a tömb viselkedése eltérő a bash és zsh héjakban. A zsh-ban a tömb index 1-nél kezdődik 0 helyett.
Használata #! a / bin / bash azt jelzi, hogy a parancsfájl bash shell parancsfájl, és a Bash parancsértelmezővel kell futtatni, függetlenül a rendszeren használt parancsértelmezőtől. Ha zsh specifikus szintaxist használ, akkor a #! /bin / zsh, mint a szkript első sora.
a#! / bin / bash nem számít. Használhatja a#!/ kuka / bash.
hasznos volt?
remélem, hogy ez a cikk hozzáadta a Linux ismereteit. Ha továbbra is kérdése vagy javaslata van, kérjük, hagyjon megjegyzést.
a szakértő felhasználók továbbra is kiválaszthatják ezt a cikket azokról a dolgokról, amelyeket kihagytam. De az ilyen kezdő témákkal az a probléma, hogy nem könnyű megtalálni az információk megfelelő egyensúlyát, és elkerülni a túl sok vagy túl kevés részletet.
ha érdekel a tanulás bash script, van egy egész Bash kezdő sorozat a sysadmin fókuszált honlapján Linux kézikönyv. Ha szeretné, megvásárolhatja az e-könyvet további gyakorlatokkal a Linux kézikönyv támogatásához.
tetszik, amit olvastál? Kérjük, ossza meg másokkal.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0