[TIP] Como descobrir dinamicamente o caminho do script

Caminhos relativos já me deram muita dor de cabeça quando eu coloco um script para ser executado via CronJob. Como o script é executado de um caminho que não é a pasta dele, o output acaba sendo criado numa outra pasta.

A forma mais simples que achei para contornar essa situação é forçar o output a ser criado na pasta que o script está no disco. Contudo, essa localização pode mudar e não pode ser adicionada hardcode no script, logo ela tem que ser obtida dinamicamente.

#/bin/bash
SCRIPTPATH=$( cd $(dirname $0) ; pwd -P )

#usage
log_file=$SCRIPTPATH/log

echo "Logging" | tee -a $log_file