Ejecución de una aplicación que abre la ruta relativa del archivo desde cualquier lugar

Ejecución de una aplicación que abre la ruta relativa del archivo desde cualquier lugar

Tengo una aplicación que al inicio abre un archivo relativo al ejecutable (esta ruta de archivo se compila estáticamente en el programa binario y no puedo modificarla). Quiero crear un alias que pueda ejecutarse desde cualquier parte del sistema sin primero "cd" en su carpeta para asegurarme de que se encuentre el archivo.

¿Es eso siquiera posible?

Respuesta1

Si el programa requiere que acceda cdal directorio y el programa no se puede cambiar, no puede ejecutar ese programa sin cdacceder a ese directorio. Es tan simple como eso.

Sin embargo, puede iniciar un segundo shell, que cdva al directorio y ejecuta el programa. Cuando el programa finaliza, el segundo shell finaliza y, como el shell principal no lo hizo cd, todavía estás en el mismo lugar.

Como ejemplo rápido:

$ alias ptmpdir="bash <<< 'cd /tmp ; pwd'"
$ ptmpdir
/tmp

Esto, como señaló Kamil Maciorowski en los comentarios, coloca el comando en el STDIN del shell. Esto funciona bien si el programa no usa STDIN, como pwden el ejemplo, y no busca errores.

alias lstmpdir="bash -c 'cd /tmp && ls' ls"

comprueba si hay errores y proporciona el código de salida correcto si cdfalla:

$ alias ptmpdir="bash -c 'cd /hop && ls' ls"
$ if ptmpdir ; then
> echo yes
> else
> echo no
> fi
ls: line 0: cd: /hop: No such file or directory
no

Si también desea pasar argumentos al comando, el alias se vuelve confuso y aún más difícil de entender. En ese caso. una función sería mejor:

$ hop(){ bash   -c 'cd /tmp && exec ls "$@"' ls "$@" ; }
$ hop
7iCipjf8J7         eh._2700550        in.clean.1285563                          tmp-ntt.xpi
MozillaMailnews    <rest deleted>

$ hop -lrt
total 56496
drwxrwxr-x 3 ljm      ljm          4096 Nov  5 17:28 gimp
drwxrwxr-x 2 ljm      ljm          4096 Nov  5 18:14 jna-107183
-rw------- 1 ljm      ljm             0 Nov  6 00:17 config-err-Ol5gyl
drwx------ 2 ljm      ljm          4096 Nov  6 00:17 ssh-FqqWxHh4jhu8
<rest deleted>

información relacionada