#bash
#bash
Вопрос:
Это часть сценария bash.
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" amp;amp; pwd )
source $DIR/framework.sh $@
Пожалуйста, кто-нибудь объяснит, что означают эти две строки.. Похоже, что он переходит в каталог, где существует $ {BASH_SOURCE [0]}, и присваивает pwd
результат DIR, но я не могу сначала понять синтаксис $ {BASH_SOURCE [0]} . Есть ли массив переменных в bash? и второй вопрос: почему он просто не делает
DIR=$( $( dirname "${BASH_SOURCE[0]}" )" )
?
Ответ №1:
Первая строка указывает абсолютный путь к скрипту, а не относительный путь. Относительный путь будет примерно таким somedir/myscript.sh
, где вы точно не знаете, где somedir
находится. Абсолютный путь был бы чем-то вроде /home/seumasmac/somedir/myscript.sh
, где мы точно знаем, где в файловой системе находится скрипт.
${BASH_SOURCE[0]}
содержит путь, используемый для вызова скрипта. Таким образом, он может возвращать что-то вроде somedir/myscript.sh
. Это похоже на $0
, основное отличие заключается в том, что оно также работает, когда скрипт создается, а не вызывается напрямую.
Если бы вы это сделали dirname somedir/myscript.sh
, это просто вернулось somedir
бы. Итак, вместо этого скрипт выполняет cd
ввод somedir
, а затем запускается pwd
. Это дает полный абсолютный путь к каталогу.
Вторая строка включает framework.sh
данные из того же каталога, используя source
команду.