on olemassa kaksi tapaa ajaa shell script Linuxissa. Voit käyttää:
bash script.sh
tai voit suorittaa komentotulkin komentotulkin näin:
./script.sh
se voi olla yksinkertaista, mutta se ei selitä paljoa. Älä huoli, teen tarvittavat selitykset esimerkeillä, jotta ymmärrät, miksi tiettyä syntaksia käytetään annetussa muodossa, kun suoritat komentotulkkikäsikirjoitusta.
aion käyttää tätä one line shell-komentosarjaa tehdäkseni asioista mahdollisimman mutkattomia:
:~/Scripts$ cat hello.sh echo "Hello World!"
menetelmä 1: komentotulkin komentotulkin suorittaminen siirtämällä tiedosto argumenttina komentotulkille
ensimmäisessä menetelmässä komentotulkin tiedostonimi siirretään argumenttina komentotulkille.
ottaen huomioon, että bash on oletustulkki, voit suorittaa komentosarjan näin:
bash hello.sh
tiedätkö, mitä hyötyä tästä lähestymistavasta on? Käsikirjoituksellasi ei tarvitse olla suoritusoikeutta. Melko kätevä nopeisiin ja yksinkertaisiin tehtäviin.
jos et ole jo tuttu, kehotan sinua lukemaan yksityiskohtaisen oppaan tiedostojen käyttöoikeudesta Linuxissa.
muista, että sen täytyy olla komentotulkkikirjoitus, jonka ohitat argumenttina. Komentotulkkikirjoitus koostuu komennoista. Jos käytät normaalia tekstitiedostoa, se valittaa virheellisistä komennoista.
tässä lähestymistavassa määritit nimenomaisesti, että haluat käyttää bashia komentosarjan tulkkina.
Shell on vain ohjelma ja bash on sen toteutus. On olemassa muita tällaisia kuoret ohjelma, kuten ksh, zsh, jne. Jos sinulla on muita kuoria asennettuna, voit käyttää myös sitä Bashin sijaan.
esimerkiksi asensin zsh: n ja käytin sitä saman skriptin ajamiseen:
suositeltu luku:
Menetelmä 2: Suorita komentotulkkikirjoitus määrittämällä sen polku
toinen tapa suorittaa komentotulkkikirjoitus on antaa sen polku. Mutta että on mahdollista, tiedosto on suoritettava. Muuten, sinulla on ”lupa evätty” virhe, kun yrität suorittaa skripti.
joten varmista ensin, että skriptilläsi on suoritusoikeus. Voit käyttää chmod-komentoa antaaksesi itsellesi tämän luvan näin:
chmod u+x script.sh
kun skripti on suoritettavissa, sinun tarvitsee vain kirjoittaa tiedoston nimi sekä sen absoluuttinen tai suhteellinen polku. Useimmiten olet samassa hakemistossa, joten voit käyttää sitä näin:
./script.sh
jos et ole samassa hakemistossa komentosarjasi kanssa, voit määrittää komentosarjan absoluuttisen tai suhteellisen polun:
tuo ./ ennen skripti on tärkeä (kun olet samassa hakemistossa kuin skripti)
miksi et voi käyttää komentosarjan nimeä, kun olet samassa hakemistossa? Tämä johtuu siitä, että Linux-järjestelmäsi etsii suoritettavia tiedostoja, jotka suoritetaan muutamissa valituissa hakemistoissa, jotka on määritetty polku-muuttujassa.
tässä on järjestelmäni POLKUMUUTTUJAN arvo:
:~$ 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
tämä tarkoittaa, että mikä tahansa tiedosto, jolla on suoritusoikeudet jossakin seuraavista hakemistoista, voidaan suorittaa mistä tahansa järjestelmästä:
- /Etusivu / abhishek/.local/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/games
- /usr/local/games
- /snap/bin
binäärit tai suoritettavat tiedostot Linux-komennoille, kuten LS, Cat jne., sijaitsevat yhdessä näistä hakemistoista. Tämän vuoksi voit suorittaa näitä komentoja mistä tahansa järjestelmästäsi vain käyttämällä niiden nimiä. Komento ls sijaitsee hakemistossa/usr / bin.
kun määrität komentosarjan ilman absoluuttista tai suhteellista polkua, se ei löydä sitä polku-muuttujassa mainituista hakemistoista.
miksi useimmat komentotulkkikommentit sisältävät #! /bin / bash komentotulkin komentotulkin alussa?
muista, kuinka mainitsin, että shell on vain ohjelma ja kuorille on erilaisia toteutuksia.
kun käytät #! /bin / bash, määrität, että skripti suoritetaan Bashin kanssa tulkkina. Jos et tee sitä ja tee käsikirjoitusta ./komentosarja.Sh manner, se on yleensä ajaa mitä kuori olet käynnissä.
onko sillä väliä? Se voisi. Suurin osa komentotulkin syntaksista on yleinen kaikenlaisissa kuorissa, mutta jotkut saattavat erota.
esimerkiksi Bash-ja zsh-kuorissa array-käyttäytyminen on erilaista. Zsh: ssa array-indeksi alkaa nollan sijasta 1: stä.
Käyttäen #! /bin / bash osoittaa, että komentosarja on bash shell-komentosarja ja se tulee suorittaa bash-tulkin kanssa riippumatta järjestelmässä käytettävästä komentotulkista. Jos käytät zsh erityistä syntaksia, voit osoittaa, että se on zsh script lisäämällä #! /bin / zsh komentosarjan ensimmäisenä rivinä.
väli#! – ei sillä ole väliä. Voit käyttää myös #!- bin bash.
oliko siitä apua?
Toivottavasti tämä artikkeli lisäsi Linux-tietämystäsi. Jos sinulla on vielä kysymyksiä tai ehdotuksia, Jätä kommentti.
Asiantuntijakäyttäjät voivat vielä niputtaa tämän artikkelin asioista, joista jäin paitsi. Mutta tällaisten aloittelevien aiheiden ongelma on se, että ei ole helppoa löytää oikeaa tietojen tasapainoa ja välttää liian paljon tai liian vähän yksityiskohtia.
jos olet kiinnostunut oppimaan bash scriptiä, meillä on kokonainen Bash Beginner-sarja sysadmin-fokusoidulla sivustolla Linux-käsikirja. Jos haluat, voit myös ostaa ebook ylimääräisiä harjoituksia tukemaan Linux-käsikirja.
Pidätkö lukemastasi? Ole hyvä ja jaa se muiden kanssa.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0