existují dva způsoby, jak spustit shell skript v Linuxu. Můžete použít:
bash script.sh
nebo můžete spustit skript shellu takto:
./script.sh
to je možná jednoduché, ale moc to nevysvětluje. Nebojte se, udělám nezbytné vysvětlení s příklady, abyste pochopili, proč je konkrétní syntaxe použita v daném formátu při spuštění skriptu shellu.
budu používat tento jeden řádek shell skript, aby se věci jako nekomplikované, jak je to možné:
:~/Scripts$ cat hello.sh echo "Hello World!"
Metoda 1: spuštění skriptu shellu předáním souboru jako argumentu shellu
první metoda zahrnuje předání názvu souboru skriptu jako argumentu shellu.
vzhledem k tomu, že bash je výchozí shell, můžete spustit skript, jako je tento:
bash hello.sh
znáte výhodu tohoto přístupu? Váš skript nemusí mít oprávnění k provádění. Docela užitečné pro rychlé a jednoduché úkoly.
pokud ještě nejste obeznámeni, doporučujeme vám přečíst si mou podrobnou příručku o oprávnění k souborům v systému Linux.
mějte na paměti, že to musí být shell skript, který předáte jako argument. Shell skript se skládá z příkazů. Pokud používáte normální textový soubor, bude si stěžovat na nesprávné příkazy.
v tomto přístupu jste výslovně uvedli, že chcete použít Bash jako interpret skriptu.
Shell je jen program a bash je jeho implementací. Existují i jiné takové skořápky program jako ksh, zsh, atd. Pokud máte nainstalované jiné skořápky, můžete to použít také místo bash.
například jsem nainstaloval zsh a použil jej ke spuštění stejného skriptu:
doporučené čtení:
Metoda 2: spusťte skript shellu zadáním jeho cesty
druhou metodou pro spuštění skriptu shellu je poskytnutí jeho cesty. Aby to však bylo možné, musí být váš soubor spustitelný. V opačném případě budete mít při pokusu o spuštění skriptu chybu“ oprávnění odepřeno“.
takže nejprve se musíte ujistit, že váš skript má oprávnění spustit. Příkaz chmod můžete použít k tomu, abyste si toto oprávnění udělili:
chmod u+x script.sh
jakmile je skript spustitelný, vše, co musíte udělat, je zadat název souboru spolu s jeho absolutní nebo relativní cestou. Nejčastěji jste ve stejném adresáři, takže jej používáte takto:
./script.sh
pokud nejste ve stejném adresáři jako skript, můžete určit absolutní nebo relativní cestu ke skriptu:
tohle ./ před tím, než je skript důležitý (pokud jste ve stejném adresáři jako skript)
proč nemůžete použít název skriptu, když jste ve stejném adresáři? Je to proto, že Vaše systémy Linux hledají spustitelné soubory pro spuštění v několika vybraných adresářích, které jsou zadány v proměnné PATH.
zde je hodnota proměnné PATH pro můj systém:
:~$ 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
to znamená, že jakýkoli soubor s oprávněními execute V jednom z následujících adresářů lze spustit odkudkoli v systému:
- /domů/abhishek/.local/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /usr/bin
- /sbin
- /usr/bin
- /usr/games
- /snap/bin
binární soubory nebo spustitelné soubory pro příkazy Linuxu, jako jsou ls, cat atd., jsou umístěny v jednom z těchto adresářů. To je důvod, proč jste schopni spustit tyto příkazy z libovolného místa na vašem systému jen pomocí jejich jména. Příkaz ls je umístěn v adresáři/usr / bin.
když zadáte skript bez absolutní nebo relativní cesty, nemůže jej najít v adresářích uvedených v proměnné PATH.
proč většina shellových skriptů obsahuje #! / bin/bash na začátku skriptů shellu?
Vzpomeňte si, jak jsem zmínil, že shell je jen program a existují různé implementace shellů.
při použití #! /bin / bash, určujete, že skript má být spuštěn s Bash jako interpret. Pokud to neuděláte a spustíte skript ./skripta.sh způsobem, to je obvykle běží s tím, co shell běžíte.
záleží na tom? Mohlo by. Většina syntaxe shellu je běžná ve všech druzích shellu, ale některé se mohou lišit.
například chování pole se liší v shellech bash a zsh. V zsh začíná index pole na 1 místo 0.
Pomocí #! /bin / bash označuje, že skript je Bash shell script a měl by být spuštěn s Bash jako interpret bez ohledu na shell, který je používán v systému. Pokud používáte specifickou syntaxi zsh, můžete označit, že se jedná o skript zsh přidáním #! / bin / zsh jako první řádek skriptu.
mezera mezi #! / bin/bash na tom nezáleží. Můžete také použít #!/ bin / bash.
bylo to užitečné?
doufám, že tento článek přidal k vašim znalostem Linuxu. Pokud máte stále dotazy nebo návrhy, zanechte prosím komentář.
odborní uživatelé mohou stále nitpick tento článek o věcech, které jsem vynechal. Problém s takovými tématy pro začátečníky však spočívá v tom, že není snadné najít správnou rovnováhu informací a vyhnout se přílišnému nebo příliš malému množství podrobností.
Máte-li zájem o učení bash script, máme celou sérii Bash začátečník na naší sysadmin zaměřené webové stránky Linux Handbook. Pokud chcete, můžete si také zakoupit ebook s dalšími cvičeními na podporu Linux Handbook.
jako to, co jsi četl? Prosím, podělte se s ostatními.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0