Referencias relativas a ficheros en shell-script

Imagen de PosProdukcion
0 puntos

Hola, tengo un shell script que ejecuta en un directorio myscripts/ y escribe o lee ficheros en referencia a ese directorio, con referencias de tipo ./fichero o ../directorio2/fichero.

El problema es que ese script puede ser llamado desde otras ubicaciones, por ejemplo, ./script.sh o ./myscripts/script.sh y en ese caso las referencias a fichero fallan.

¿Sabéis como puedo saber el directorio desde el que fue llamado el script o como referenciar los ficheros desde el shell-script? (el direccinamiento absoluto no me vale pq no se que usuario lo está llamando)

Gracias

Imagen de joseluis
+1
0
-1

En $0 tienes no solo el script que estás ejecutando sino también el directorio que se le ha puesto en la llamada, por ejemplo si lo llamas con ./script.sh, en $0 tienes ./script.sh y dirname te da . si por el contrario lo hubieras invocado como ./myscripts/script.sh en $0 tendrías ./myscripts/script.sh mientras que dirname te daría ./myscripts

Así pues lo único que tienes que hacer al comienzo de tu script es recoger la ruta relativa con:

dirscript=`dirname $0`

a partir de ahí, puedes referenciar los ficheros con ${dirscript}/fichero (o como se llamen).

+1
0
-1