Quiero ejecutar un programa ds9desde la Terminal. El programa está claramente en la RUTA, 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 bien si uso la ruta completa de la siguiente manera:
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
¿Que esta pasando? ¿Por qué está tratando de correr /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
Actualizar:
Aquí está la salida del type -a ds9comando en ejecución :
type -a ds9
ds9 is aliased to `/Applications/ds9.app/Contents/MacOS/ds9 -xpa no'
ds9 is /Users/evgenii/miniconda3/envs/iraf/bin/ds9

which. Es un programa externo, por lo que no puede contar sobre alias de shell.PATHlugar dealiasy entypelugar dewhich.Respuestas:
El comando aparentemente tiene un alias en un alias roto. En primer lugar, la verificación de todos los partidos para
ds9enPATHla variable de entorno, mediante la ejecución del siguiente comando:type -a ds9Según su pregunta actualizada, se desprende del resultado del
type -a ds9comando que un alias está sombreando el comando real.Para ejecutar el comando real ignorando el alias y sin especificar la ruta completa, anteponga un carácter
\(barra invertida) antes del comando. Esto ignora cualquier alias definido por bash.Si no desea anteponer la barra diagonal inversa antes del comando cada vez, averigüe dónde se está creando el alias y elimínelo o anule el alias con el comando real.
fuente
ds9definición de alias es muy probable~/.bashrcy debe eliminarse allí (porque es un mal método que conduce a este tipo de problema).grep ds9 ~/.bashrclo confirmaráVeo que esto se resolvió para el autor de la pregunta, pero para los futuros lectores, quiero mencionar que también podría ser el caso de que el comando se haya modificado y luego se elimine el archivo. (Ver
help hashpara información).type -a commandnameno te mostrará eso, solo lotype commandnamehará.En este caso,
hash -d ds9sería todo lo que se necesitaría.fuente