Ответ 1
Bash поддерживает ряд переменных, включая BASH_SOURCE
, который является массивом путей к исходным файлам.
${}
действует как своего рода цитирование для переменных.
$()
действует как своего рода цитирование для команд, но они запускаются в их собственном контексте.
dirname
предоставляет вам часть пути предоставленного аргумента.
cd
изменяет текущий каталог.
pwd
указывает текущий путь.
&&
является логическим and
, но используется в этом случае для его побочного эффекта запуска команд один за другим.
Таким образом, эта команда получает путь к исходному файлу script, разделяет его только на часть пути, cd
на этот путь, а затем использует pwd
для возврата (эффективного) полного пути к script, Это присваивается DIR
. После этого контекст разматывается, и вы вернетесь в каталог, в котором вы начали, но с переменной окружения DIR
, содержащей путь script.