En un script, me meto en $0
la 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.
dirname
utilidad es útil aquí.
BASH_SOURCE
que es mejor que $0
, como se $0
le da al usuario de tecleado en el mando, que podría no ser la secuencia de comandos se está ejecutando actualmente.
readlink -f $0
para obtener la ruta canónica.