Shell-скрипты позволяют автоматизировать задачи в Linux. Иногда вам может понадобиться получить каталог сценария bash или получить папку, в которой находится сценарий. Это может быть полезно в случае, если вы хотите ограничить выполнение сценария оболочки в зависимости от того, как он вызывается, или вы хотите настроить сценарий оболочки в зависимости от его местоположения. В этой статье мы узнаем, как получить каталог shell-скрипта.
Как получить каталог сценария оболочки
Вот простая однострочная команда для получения папки сценария оболочки. Вам нужно добавить ее в свой сценарий оболочки, чтобы он отображал путь к папке.
1 2 3 | #!/usr/bin/env bash SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) |
Приведенный выше код выведет путь к папке сценария оболочки, независимо от того, откуда вы его вызываете.
Вы также можете использовать `dirname "$0″ или $(dirname "$0"), но его вывод будет отличаться в зависимости от того, как вызывается скрипт.
Допустим, вы создаете пустой shell-скрипт.
1 | sudo nano test.sh |
Добавьте в него следующие строки.
1 2 3 4 | #!/usr/bin/env bash SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) echo "Расположение сценария $SCRIPT_DIR" |
Сохраните и закройте файл.
В приведенном выше коде BASH_SOURCE[0] содержит полный путь к файлу вашего сценария оболочки. Команда dirname используется для получения местоположения папки, содержащей файл. Как только она получена, мы используем команду cd для перехода в эту папку. Вывод всех этих команд отбрасывается, отправляясь в dev/null. Наконец, мы вызываем команду pwd, чтобы получить текущий рабочий каталог и сохранить его в переменной оболочки SCRIPT_DIR.
Сделаем скрипт исполняемым.
1 | chmod +x test.sh |
Запустите скрип.
1 | ./test.sh |
Заключение
В этой небольшой статье мы узнали, как получить расположение папки сценария оболочки. Вы можете использовать эти команды в любой оболочке, не только в bash.