9 votos

No se puede ejecutar un programa concreto desde Terminal sin utilizar su ruta completa

Quiero ejecutar un programa ds9 de la Terminal. El programa está claramente en el PATH, que determiné ejecutando:

which ds9
/Users/evgenii/miniconda3/envs/iraf/bin/ds9

Pero cuando ejecuto el comando escribiendo ds9 me muestra el siguiente error:

-bash: /Applications/ds9.app/Contents/MacOS/ds9: No such file or directory

Todavía puedo ejecutarlo sin problemas si utilizo la ruta completa de la siguiente manera:

/Users/evgenii/miniconda3/envs/iraf/bin/ds9

¿Qué es lo que pasa? ¿Por qué está tratando de ejecutar /Applications/ds9.app ?

Los permisos son los siguientes:

-rwxrwxr-x@ 1 evgenii  staff  18613852  9 Nov 20:13 /Users/evgenii/miniconda3/envs/iraf/bin/ds9

Actualización:

Este es el resultado de la ejecución type -a ds9 mando:

type -a ds9
ds9 is aliased to `/Applications/ds9.app/Contents/MacOS/ds9 -xpa no'
ds9 is /Users/evgenii/miniconda3/envs/iraf/bin/ds9

4 votos

No utilice which . Es un programa externo, por lo que no puede conocer los alias del shell.

0 votos

Receipe para trabajar con comandos: use PATH en lugar de alias y type en lugar de which .

19voto

Nimesh Neema Puntos 69

Aparentemente, el comando tiene un alias roto. En primer lugar, compruebe todas las coincidencias de ds9 en PATH ejecutando el siguiente comando:

type -a ds9

Según tu pregunta actualizada, se desprende de la salida de type -a ds9 que un alias está haciendo sombra al comando real.

Para ejecutar el comando real ignorando el alias y sin especificar la ruta completa, añada un prefijo \ (barra invertida) antes del comando. Esto ignora cualquier alias definido por bash.

Si no desea anteponer la barra invertida al comando cada vez, averigüe dónde se está creando el alias y elimínelo o sustituya el alias por el comando real.

1 votos

En ds9 La definición del alias se encuentra probablemente en ~/.bashrc y debe ser eliminado allí (porque es un mal método que conduce a este tipo de problema). grep ds9 ~/.bashrc lo confirmará.

4voto

Wildcard Puntos 121

Veo que esto se resolvió para el autor de la pregunta, pero para futuros lectores quiero mencionar que también podría darse el caso de que el comando fuera hash y luego el archivo eliminado. (Véase help hash para más información).

type -a commandname no le mostrará que, sólo type commandname lo hará.

En este caso, hash -d ds9 sería todo lo que se necesitaría.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X