2012-12-11 13 views
5

Ho appena reinstallato Haskell Platform (here is why) e dopo aver reinstallato la piattaforma Haskell ottengo:Bash non riesce a trovare ghc dopo la reinstallazione?

Drews-MacBook-Pro:Blokus-AI drewgross$ ghc 
-bash: /usr/local/bin/ghc: No such file or directory 

Qualsiasi idea del perché? Sospetto che questo abbia a che fare con il mio percorso o qualcosa del genere ma non ho ancora trovato nulla di strano. Posso usare ghc direttamente:

Drews-MacBook-Pro:Blokus-AI drewgross$ /usr/bin/ghc 
ghc: no input files 
Usage: For basic information, try the `--help' option. 

e/usr/bin/è nel mio percorso:

Drews-MacBook-Pro:Blokus-AI drewgross$ echo $PATH 
/Users/drewgross/.rvm/gems/ruby-1.9.3-p327/bin:/Users/drewgross/.rvm/gems/[email protected]/bin:/Users/drewgross/.rvm/rubies/ruby-1.9.3-p327/bin:/Users/drewgross/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin 

che altro posso fare?

+0

symlink '/ usr/local/bin/ghc' a'/usr/bin/ghc'? –

+0

sembra un brutto scherzo e mentre suppongo funzionerà preferirei evitare cose come quella – Drew

risposta

9

La shell bash memorizza nella cache i percorsi ai comandi utilizzati in precedenza. Utilizzando which ghc non mostrerà questo (perché è esterna al guscio e appena interroga il PATH), ma type è un comando bash -Internal che svelerà questa situazione, in modo da type ghc mostrerà qualcosa di simile

ghc is hashed (/usr/local/bin/ghc) 

La correzione è facile. O avvia una nuova shell (dove inizi da zero) oppure cancella la cache dicendo hash -r.

+0

+1 per spiegare perché 'which ghc' non ha aiutato –

1

Una delle tue directory nel tuo $PATH ha un collegamento simbolico eseguibile che punta al non più esistente /usr/local/bin/ghc. Per scoprirlo, digitare which ghc in bash. Se il risultato è davvero un link simbolico, basta cancellarlo. Se si tratta di uno script personalizzato, è possibile rinominarlo anziché eliminarlo nel caso in cui ti serva in seguito.

+0

che ghc punta a/usr/bin/ghc – Drew

+1

Il comando essenziale è 'tipo ghc'. La tua shell potrebbe avere il vecchio percorso 'ghc' nella cache. In 'bash', puoi fare' hash -r' per cancellare la cache. O puoi iniziare una nuova shell. – kosmikus

+0

@kosmikus che ha risolto il mio problema, grazie! Se vuoi fare una risposta, la accetterò. – Drew

Problemi correlati