Как да стартирате Shell скрипт в Linux [Essentials Explained]

Сподели

Има два начина за стартиране на shell скрипт в Linux. Можеш да използваш:

bash script.sh

Или можете да изпълните shell скрипта по този начин:

./script.sh

Това може би е просто, но не обяснява много. Не се притеснявайте, ще направя необходимото обяснение с примери, така че да разберете защо се използва конкретен синтаксис в дадения формат, докато изпълнявате shell скрипт.

Ще използвам този едноредов шел скрипт, за да направя нещата възможно най-неусложнени:

[email protected]:~/Scripts$ cat hello.sh 

echo "Hello World!"

Метод 1: Изпълнение на shell скрипт чрез предаване на файла като аргумент на shell

Първият метод включва предаване на името на файла на скрипта като аргумент към обвивката.

Като се има предвид, че bash е обвивката по подразбиране, можете да стартирате скрипт като този:

bash hello.sh

Знаете ли какво е предимството на този подход? Вашият скрипт не трябва да има разрешение за изпълнение. Доста удобен за бързи и лесни задачи.

Изпълнение на Shell Script Linux

Ако вече не сте запознати, съветвам ви прочетете подробното ми ръководство за разрешение за файлове в Linux.

Имайте предвид, че това трябва да бъде скрипт на обвивка, който предавате като аргумент. Shell скриптът се състои от команди. Ако използвате нормален текстов файл, той ще се оплаква от неправилни команди.

Изпълнение на текстов файл като скрипт в Linux
Изпълнение на текстов файл като скрипт

При този подход, вие изрично посочихте, че искате да използвате bash като интерпретатор за сценария.

Shell е просто програма, а bash е нейна реализация. Има и други подобни черупки като ksh, zshи т.н. Ако имате инсталирани други обвивки, можете да използвате и тях вместо bash.

Например, инсталирах zsh и го използвах, за да стартирам същия скрипт:

Изпълнете Shell Script със Zsh
Изпълнете Shell Script със Zsh

Метод 2: Изпълнете shell скрипт, като посочите пътя му

Другият метод за стартиране на shell скрипт е чрез предоставяне на неговия път. Но за да е възможно това, вашият файл трябва да е изпълним. В противен случай ще имате грешка „отказано разрешение“, когато се опитате да изпълните скрипта.

Така че първо трябва да се уверите, че вашият скрипт има разрешение за изпълнение. Можеш използвайте командата chmod да си дадете това разрешение по следния начин:

chmod u+x script.sh

След като вашият скрипт е изпълним, всичко, което трябва да направите, е да въведете името на файла заедно с неговото абсолютен или относителен път. Най-често сте в същата директория, така че просто я използвате по следния начин:

./script.sh

Ако не сте в същата директория като вашия скрипт, можете да посочите абсолютния или относителния път към скрипта:

Изпълнение на Shell Script в друга директория
Изпълнение на Shell Script в друга директория

Това ./ преди скрипта е важно (когато сте в същата директория като скрипта)

Изпълнение на Shell скриптове Linux

Защо не можете да използвате името на скрипта, когато сте в същата директория? Това е така, защото вашите Linux системи търсят изпълнимите файлове за изпълнение в няколко избрани директории, които са посочени в променливата PATH.

Ето стойността на променливата PATH за моята система:

[email protected]:~$ 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

Това означава, че всеки файл с разрешения за изпълнение в една от следните директории може да бъде изпълнен от всяко място в системата:

  • /home/abhishek/.local/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/игри
  • /usr/local/games
  • /snap/bin

Двоичните или изпълними файлове за Linux команди като ls, cat и т.н. се намират в една от тези директории. Ето защо можете да изпълнявате тези команди от всяка точка на вашата система само като използвате техните имена. Вижте, командата ls се намира в директорията /usr/bin.

Намиране на Command Linux

Когато посочите скрипта БЕЗ абсолютния или относителен път, той не може да го намери в директориите, споменати в променливата PATH.

Защо повечето shell скриптове съдържат #! /bin/bash в началото на шел скриптовете?

Спомнете си как споменах, че shell е просто програма и че има различни реализации на shell-ове.

Когато използвате #! /bin/bash, вие указвате, че скриптът трябва да се изпълнява с bash като интерпретатор. Ако не направите това и стартирате скрипт по начин ./script.sh, той обикновено се изпълнява с каквато и черупка да изпълнявате.

Има ли значение? Може би. Вижте, по-голямата част от синтаксиса на shell е общ за всички видове shell, но някои може да се различават.

Например, поведението на масива е различно в обвивките bash и zsh. В zsh индексът на масива започва от 1 вместо от 0.

Bash срещу Zsh
Bash срещу Zsh

Използвайки #! /bin/bash показва, че скриптът е bash shell скрипт и трябва да се изпълнява с bash като интерпретатор, независимо от черупката, която се използва в системата. Ако използвате специфичен за zsh синтаксис, можете да посочите, че това е zsh скрипт, като добавите #! /bin/zsh като първи ред на скрипта.

Интервалът между #! /bin/bash няма значение. Можете също да използвате #!/bin/bash.

Беше ли полезно?

Надявам се тази статия да допринесе за вашите познания за Linux. Ако все още имате въпроси или предложения, моля, оставете коментар.

Опитните потребители все още могат да се заяждат с тази статия за неща, които съм пропуснал. Но проблемът с такива теми за начинаещи е, че не е лесно да се намери правилният баланс на информацията и да се избегне твърде много или твърде малко подробности.

Ако се интересувате от изучаването на bash скрипт, ние имаме цялата серия Bash за начинаещи на нашия уебсайт, фокусиран върху системния администратор Наръчник за Linux. Ако искате, можете също закупете електронната книга с допълнителни упражнения за поддръжка на Linux Handbook.


Източник: itsfoss.com

Публикациите се превеждат автоматично с google translate


Сподели