Команда source в Bash

Thank you for reading this post, don't forget to subscribe!

Коман­да source чита­ет и выпол­ня­ет коман­ды из фай­ла, ука­зан­но­го в каче­стве аргу­мен­та в теку­щей сре­де обо­лоч­ки. Полез­но загру­жать функ­ции, пере­мен­ные и фай­лы кон­фи­гу­ра­ции в сце­на­рии оболочки.

source это обо­лоч­ка, встро­ен­ная в Bash и дру­гие попу­ляр­ные обо­лоч­ки, исполь­зу­е­мые в опе­ра­ци­он­ных систе­мах Linux и UNIX. Его пове­де­ние может немно­го отли­чать­ся от обо­лоч­ки к оболочке.

 

Син­так­сис коман­ды source следующий:

  • source и .(точ­ка) – это одна и та же команда.
  • Если FILENAME путь к фай­лу не пол­ный, коман­да выпол­нит поиск фай­ла в ката­ло­гах, ука­зан­ных в пере­мен­ной сре­ды $PATH. Если файл не най­ден в коман­де $PATH, будет выпол­нен поиск фай­ла в теку­щем каталоге.
  • Если ARGUMENTS они зада­ны, они ста­нут пози­ци­он­ны­ми пара­мет­ра­ми для FILENAME.
  • Если FILENAME суще­ству­ет source­код завер­ше­ния коман­ды 0, в про­тив­ном слу­чае, если файл не най­ден, он вер­нет­ся 1.

 

В этом раз­де­ле мы рас­смот­рим неко­то­рые основ­ные при­ме­ры исполь­зо­ва­ния коман­ды source.

 

Если у вас есть сце­на­рии обо­лоч­ки, исполь­зу­ю­щие те же функ­ции, вы може­те извлечь их в отдель­ный файл, а затем полу­чить этот файл в сво­их файлах.

В этом при­ме­ре мы созда­дим файл, кото­рый вклю­ча­ет в себя функ­цию bash, кото­рая про­ве­ря­ет, явля­ет­ся ли поль­зо­ва­тель, выпол­ня­ю­щий скрипт, поль­зо­ва­те­лем root, и, если нет, пока­зы­ва­ет сооб­ще­ние и завер­ша­ет рабо­ту скрипта.

functions.sh

 

Теперь в каж­дом из ваших сце­на­ри­ев, кото­рые долж­ны запус­кать­ся толь­ко поль­зо­ва­те­лем root, про­сто создай­те файл functions.sh и вызо­ви­те функцию:

 

Если вы запу­сти­те при­ве­ден­ный выше сце­на­рий как поль­зо­ва­тель без пол­но­мо­чий root, он напе­ча­та­ет «Этот сце­на­рий дол­жен быть запу­щен от име­ни поль­зо­ва­те­ля root» и завершится.

Пре­иму­ще­ство это­го под­хо­да состо­ит в том, что ваши скрип­ты будут мень­ше и более чита­бель­ны, вы може­те повтор­но исполь­зо­вать один и тот же файл функ­ций при необ­хо­ди­мо­сти, и если вам нуж­но изме­нить функ­цию, вы отре­дак­ти­ру­е­те толь­ко один файл.

 

С помо­щью коман­ды source вы так­же може­те читать пере­мен­ные из фай­ла. Пере­мен­ные долж­ны быть уста­нов­ле­ны с исполь­зо­ва­ни­ем син­так­си­са VARIABLE=VALUE в Bash.

Давай­те созда­дим тесто­вый файл конфигурации:

config.sh

В вашем bash-скрип­те исполь­зуй­те коман­ду source для чте­ния фай­ла конфигурации:

 

Если вы запу­сти­те скрипт, резуль­тат будет выгля­деть так:

Из этой ста­тьи вы узна­ли, как исполь­зо­вать sourceв­стро­ен­ную коман­ду в сце­на­ри­ях оболочки.