Что означает строчка в коде?
#!/bin/bash
TARGET="/home/webuser/deploy-folder"
GIT_DIR="/home/webuser/www.git"
BRANCH="master"
while read oldrev newrev ref
do
# only checking out the master (or whatever branch you would like to deploy)
if [ "$ref" = "refs/heads/$BRANCH" ];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done
что означает #!/bin/bash?
без неё всё работает, насколько важна эта строчка?
P.S. к вопросу cannot run hooks/post-receive: No such file or directory
Ответы (1 шт):
Это шебанг (англ. «shebang»):
Когда скрипт с шебангом выполняется как программа в Unix-подобных операционных системах, загрузчик программ рассматривает остаток строки после шебанга как имя файла программы-интерпретатора. Загрузчик запускает эту программу и передаёт ей в качестве параметра имя файла скрипта с шебангом. Например, если полное имя файла скрипта
path/to/scriptи первая строка этого файла:#!/bin/shто загрузчик запускает на выполнение
/bin/sh(обычно это Bourne shell или совместимый интерпретатор командной строки) и передаётpath/to/scriptкак первый параметр.
Что касается важности, она необходима, если вы запускаете ваш скрипт
как просто ./myscript, а если вы запускаете
bash ./myscript, то она выполняет исключительно
информативную функцию, указывая читающему на интерпретатор.