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.shy 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.shme da:
myfile: No such file or directoryEntonces, ¿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