Tengo una utilidad que consta de un par de directorios con algunos scripts de bash y archivos de soporte que se implementarán en varias máquinas, posiblemente en un directorio diferente en cada máquina. Los scripts deben poder hacer referencia a las rutas relativas a ellos mismos, por lo que necesito poder obtener la ruta al archivo que se está ejecutando actualmente.
Soy consciente del dirname $0
idioma que funciona perfectamente cuando mi script se llama directamente. Desafortunadamente, existe el deseo de poder crear enlaces simbólicos a estos scripts desde un directorio totalmente diferente y todavía tener la lógica de ruta relativa de trabajo.
Un ejemplo de la estructura general general es el siguiente:
/
|-usr/local/lib
| |-foo
| | |-bin
| | | |-script.sh
| | |-res
| | | |-resource_file.txt
|-home/mike/bin
| |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh)
¿Cómo puedo hacer referencia confiable /usr/local/lib/foo/res/resource_file.txt
de script.sh
si es invocado por /usr/local/lib/foo/bin/script.sh
o ~mike/bin/link_to_script
?