Часто есть необходимость в точном позиционировании на файловой системе относительно выполняемого bash скрипта. Например, я веду лог файл выполнения скрипта и размещаю его рядом с самим скриптом с именем name_of_my_bash_script.sh.log.
Вот как реализовываем:
script_pwd=$(cd $(dirname "$0"); pwd)
logfile=${script_pwd}/`basename ${0}`.log
Хочу, дополнительно, прокомментировать написанную выше конструкцию. Она позволяет определить полный путь к лог-файлу (а не относительный от самого скрипта), что в свою очередь позволяет избежать проблем при запуске скрипта из разных мест файловой системы, а также при изменении рабочей директории в процессе выполнения скрипта.
Вот как реализовываем:
script_pwd=$(cd $(dirname "$0"); pwd)
logfile=${script_pwd}/`basename ${0}`.log
Хочу, дополнительно, прокомментировать написанную выше конструкцию. Она позволяет определить полный путь к лог-файлу (а не относительный от самого скрипта), что в свою очередь позволяет избежать проблем при запуске скрипта из разных мест файловой системы, а также при изменении рабочей директории в процессе выполнения скрипта.