Eu quero executar um programa ds9
no Terminal. O programa está claramente no PATH, que eu determinei executando:
which ds9
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
Mas quando executo o comando digitando ds9
, ele me mostra o seguinte erro:
-bash: /Applications/ds9.app/Contents/MacOS/ds9: No such file or directory
Ainda posso executá-lo bem se usar o caminho completo da seguinte maneira:
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
O que está acontecendo? Por que ele está tentando correr /Applications/ds9.app
?
As permissões são as seguintes:
-rwxrwxr-x@ 1 evgenii staff 18613852 9 Nov 20:13 /Users/evgenii/miniconda3/envs/iraf/bin/ds9
Atualizar:
Aqui está a saída do type -a ds9
comando running :
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
. É um programa externo, portanto, não pode contar sobre aliases de shell.PATH
vez dealias
e emtype
vez dewhich
.Respostas:
O comando aparentemente está com um alias quebrado. Primeiro, verifique todas as correspondências
ds9
naPATH
variável de ambiente executando o seguinte comando:type -a ds9
De acordo com sua pergunta atualizada, é aparente na saída do
type -a ds9
comando que um alias está sombreando o comando real.Para executar o comando real ignorando o alias e sem especificar o caminho completo, adicione um
\
caractere (barra invertida) antes do comando. Isso ignora qualquer alias definido pelo bash.Se você não desejar anexar sempre a barra invertida antes do comando, descubra onde o alias está sendo criado e remova-o ou substitua-o pelo comando real.
fonte
ds9
definição de alias provavelmente está presente~/.bashrc
e deve ser removida (porque é um método ruim que leva a esse tipo de problema).grep ds9 ~/.bashrc
irá confirmar.Vejo que isso foi resolvido para o solicitante, mas para futuros leitores, quero mencionar que também pode ser que o comando tenha sido hash e, em seguida, o arquivo removido. (Veja
help hash
para informações.)type -a commandname
não vai te mostrar isso, sótype commandname
vai.Nesse caso,
hash -d ds9
seria tudo o que seria necessário.fonte