Impossibile eseguire un particolare programma dal Terminale senza utilizzare il suo percorso completo


9

Voglio eseguire un programma ds9dal terminale. Il programma è chiaramente nel PERCORSO, che ho determinato eseguendo:

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

Ma quando eseguo il comando digitando ds9, mi mostra il seguente errore:

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

Posso ancora eseguirlo bene se uso il percorso completo come segue:

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

Cosa sta succedendo? Perché sta cercando di correre /Applications/ds9.app?

Le autorizzazioni sono le seguenti:

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

Aggiornare:

Ecco l'output del type -a ds9comando 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

4
Non usare which. È un programma esterno, quindi non può parlare di alias di shell.
Barmar,

Receipe per lavorare con i comandi: usa PATHpiuttosto che aliase typepiuttosto che which.
dan

Risposte:


19

Il comando è apparentemente aliasato con un alias rotto. Innanzitutto, controlla tutte le corrispondenze per ds9nella PATHvariabile di ambiente, eseguendo il comando seguente:

type -a ds9

Secondo la tua domanda aggiornata, dall'output del type -a ds9comando risulta che un alias sta oscurando il comando effettivo.

Per eseguire il comando effettivo ignorando l'alias e senza specificare il percorso completo, anteporre un carattere \(barra rovesciata) prima del comando. Questo ignora qualsiasi alias definito da bash.

Se non si desidera anteporre ogni volta la barra rovesciata prima del comando, capire dove viene creato l'alias e rimuoverlo oppure sovrascrivere l'alias con il comando effettivo.


1
La ds9definizione di alias è probabilmente in ~/.bashrce dovrebbe essere rimossa lì (perché è un metodo errato che porta a questo tipo di problema). grep ds9 ~/.bashrclo confermerò.
dan

4

Vedo che questo è stato risolto per chi lo richiede, ma per i futuri lettori voglio menzionare che potrebbe anche essere il caso in cui il comando è stato sottoposto a hash e quindi il file rimosso. (Vedi help hashper info.)

type -a commandnamenon te lo mostrerò, solo lo type commandnamefarà.

In questo caso, hash -d ds9sarebbe tutto ciò che sarebbe necessario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.