Quiero ejecutar un programa ds9
desde 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 ds9
comando 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.PATH
lugar dealias
y entype
lugar dewhich
.Respuestas:
El comando aparentemente tiene un alias en un alias roto. En primer lugar, la verificación de todos los partidos para
ds9
enPATH
la variable de entorno, mediante la ejecución del siguiente comando:type -a ds9
Según su pregunta actualizada, se desprende del resultado del
type -a ds9
comando 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
ds9
definición de alias es muy probable~/.bashrc
y debe eliminarse allí (porque es un mal método que conduce a este tipo de problema).grep ds9 ~/.bashrc
lo 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 hash
para información).type -a commandname
no te mostrará eso, solo lotype commandname
hará.En este caso,
hash -d ds9
sería todo lo que se necesitaría.fuente