Je veux exécuter un programme à ds9
partir du terminal. Le programme est clairement dans le PATH, que j'ai déterminé en exécutant:
which ds9
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
Mais lorsque j'exécute la commande en tapant ds9
, cela me montre l'erreur suivante:
-bash: /Applications/ds9.app/Contents/MacOS/ds9: No such file or directory
Je peux toujours l'exécuter correctement si j'utilise le chemin complet comme suit:
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
Que se passe-t-il? Pourquoi essaie-t-il de courir /Applications/ds9.app
?
Les autorisations sont les suivantes:
-rwxrwxr-x@ 1 evgenii staff 18613852 9 Nov 20:13 /Users/evgenii/miniconda3/envs/iraf/bin/ds9
Mise à jour:
Voici la sortie de la type -a ds9
commande en cours d'exécution :
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
. C'est un programme externe, donc il ne peut pas parler des alias de shell.PATH
plutôt quealias
ettype
plutôt quewhich
.Réponses:
La commande est apparemment aliasée à un alias cassé. Tout d' abord, vérifier pour tous les matches pour
ds9
enPATH
variable d'environnement, en exécutant la commande suivante:type -a ds9
Selon votre question mise à jour, il ressort de la sortie de la
type -a ds9
commande, qu'un alias suit la commande réelle.Pour exécuter la commande réelle en ignorant l'alias et sans spécifier le chemin d'accès complet, ajoutez un caractère
\
(barre oblique inverse) avant la commande. Cela ignore tout alias défini par bash.Si vous ne souhaitez pas ajouter la barre oblique inverse avant la commande à chaque fois, déterminez où l'alias est créé et supprimez-le ou remplacez l'alias par la commande réelle.
la source
ds9
définition d'alias est très probablement dans~/.bashrc
et devrait y être supprimée (car c'est une mauvaise méthode conduisant à ce genre de problème).grep ds9 ~/.bashrc
le confirmera.Je vois que cela a été résolu pour le demandeur, mais pour les futurs lecteurs, je tiens à mentionner que cela pourrait également être le cas si la commande a été hachée puis le fichier supprimé. (Voir
help hash
pour info.)type -a commandname
ne vous le montrera pas, seulementtype commandname
.Dans ce cas, ce
hash -d ds9
serait tout ce qui serait nécessaire.la source