2012-12-11 17 views
5

po prostu ponownie zainstalować Haskell Platform (here is why) i po ponownym zainstalowaniu platformy Haskell uzyskać:Bash nie może znaleźć GHC po ponownym zainstalowaniu?

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

jakiś pomysł, dlaczego? Podejrzewam, że ma to coś wspólnego z moją ścieżką lub czymś podobnym, ale jeszcze nie znalazłem nic dziwnego. Mogę użyć GHC bezpośrednio:

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

i/usr/bin/jest w moim ścieżki:

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 

co jeszcze mogę zrobić?

+0

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

+0

który brzmi jak brzydki hack i chociaż przypuszczam, że to zadziała, wolałbym unikać takich rzeczy, – Drew

Odpowiedz

9

Powłoka buforuje ścieżki do poleceń, które wcześniej były używane. Korzystanie which ghc nie pokaże tego (bo to na zewnątrz skorupy i po prostu pyta PATH), ale type jest bash -internal poleceń, które ujawni tę sytuację, więc type ghc pokaże coś takiego

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

poprawkę jest proste. Albo zacznij nową powłokę (od czego zaczynasz od zera), albo wyczyść pamięć podręczną, mówiąc: hash -r.

+0

+1 za wyjaśnienie, dlaczego 'który ghc' nie pomagał –

1

Jeden z twoich katalogów w twoim $PATH ma wykonywalne dowiązanie symboliczne, które wskazuje na nieistniejący już /usr/local/bin/ghc. Aby się tego dowiedzieć, wpisz which ghc w bash. Jeśli wynik jest rzeczywiście dowiązaniem symbolicznym, po prostu go usuń. Jeśli jest to skrypt niestandardowy, możesz go zmienić zamiast usunąć, na wypadek gdybyś go potrzebował później.

+0

, które wskazuje na ghc/usr/bin/ghc – Drew

+1

Zasadniczą komendą jest 'type ghc'. Twoja powłoka może mieć starą buforowaną ścieżkę 'ghc'. W 'bash' możesz albo użyć polecenia' hash -r', aby wyczyścić pamięć podręczną. Lub możesz rozpocząć nową powłokę. – kosmikus

+0

@kosmikus, który rozwiązał mój problem, dziękuję! Jeśli chcesz udzielić tej odpowiedzi, zaakceptuję ją. – Drew

Powiązane problemy