Necesito ejecutar un script que acceda a un archivo en la misma ruta en la que se encuentra.
Por ejemplo: tengo el script /home/me/folder/script.sh
y este script accederá al archivo /home/me/folder/myfile
. Como el archivo está en la misma ruta del script, solo uso el nombre myfile
, no la ruta completa.
Pero si lo ejecuto /tmp/
, como:
/tmp$ /home/me/folder/script.sh
me da:
myfile: No such file or directory
Entonces, ¿cómo puedo decir en el script que el archivo está en la misma ruta que el script en sí?
shell
scripting
shell-script
path
Tom Brito
fuente
fuente
Respuestas:
¿Qué tal
$(dirname "$0")/myfile
?fuente
No puede saberlo en todas las circunstancias, pero a menudo (no siempre) cuando ejecuta un script por ruta en lugar de permitir que el shell busque
$PATH
, la ruta al script estará en$0
. Luego puede usardirname "$0"
o${0%/*}
para obtener el camino.fuente
Normalmente haría algo como esto al comienzo de mi guión:
O, para obtener la ruta completa al directorio de la secuencia de comandos (en lugar de una ruta relativa):
Luego solo haga referencia
${SCRIPTDIR}
donde sea necesario.fuente