Подтвердить что ты не робот

DIR = "$ (cd" $(dirname "$ {BASH_SOURCE [0]}" ) "&& pwd)" Как это работает?

Мне нужно получить путь к script. Я могу сделать это с помощью pwd, если я уже в том же каталоге, я искал в Интернете, и я нашел это

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

Но я не использую это.

4b9b3361

Ответ 1

Bash поддерживает ряд переменных, включая BASH_SOURCE, который является массивом путей к исходным файлам.

${} действует как своего рода цитирование для переменных.

$() действует как своего рода цитирование для команд, но они запускаются в их собственном контексте.

dirname предоставляет вам часть пути предоставленного аргумента.

cd изменяет текущий каталог.

pwd указывает текущий путь.

&& является логическим and, но используется в этом случае для его побочного эффекта запуска команд один за другим.

Таким образом, эта команда получает путь к исходному файлу script, разделяет его только на часть пути, cd на этот путь, а затем использует pwd для возврата (эффективного) полного пути к script, Это присваивается DIR. После этого контекст разматывается, и вы вернетесь в каталог, в котором вы начали, но с переменной окружения DIR, содержащей путь script.