En un script, me meto en $0la posible ruta relativa a él. Para convertirlo a absoluto, he encontrado esta solución que no entiendo:
abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
Mi problema es la magia dentro de ${0%/*}y ${0##*/}. Parece que el primero extrae el nombre del directorio y el segundo extrae el nombre del archivo, simplemente no entiendo cómo.
dirnameutilidad es útil aquí.
BASH_SOURCEque es mejor que $0, como se $0le da al usuario de tecleado en el mando, que podría no ser la secuencia de comandos se está ejecutando actualmente.
readlink -f $0para obtener la ruta canónica.