2012-12-11 5 views
5

Sadece Haskell Platformu (here is why) yeniden ve Haskell Platformu yeniden sonra alıyorum:Bash, yeniden yükledikten sonra ghc'yi bulamıyor mu?

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

konusunda fikrin neden? Bunun benim yolumla ya da böyle bir şeyle ilgili bir şey olduğunu sanıyorum ama henüz tuhaf bir şey bulamadım. Ben doğrudan GHC kullanabilirsiniz:

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

Ve/usr/bin/uygulanacak yol:

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 

başka ne yapabilirim?

+0

sembolik bağı ''/usr/bin/ghc'/usr/local/bin/ghc'? çirkin bir hack gibi geliyor ve ben işe yarayacak varsayalım ederken ben o –

+0

olarak/usr/bin/ – Drew

cevap

9

bash kabuk önbelleğe yolları önceden kullanmış olduğunuz komutları için. (Bu kabuğuna dış var ve sadece PATH sorgular nedeniyle), ancak type bu durumu ortaya çıkaracaktır bir bash -iç komuttur bu göstermez which ghc kullanarak, bu yüzden type ghc

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

düzeltme gibi bir şey göstereceğim kolay. Yeni bir kabuk (sıfırdan başladığınız yer) başlatın veya önbelleği hash -r söyleyerek temizleyin.

+0

+1 –

1

$PATH'unuzdaki dizinlerden biri, artık varolmayan /usr/local/bin/ghc işaret eden bir çalıştırılabilir bağlantı noktasına sahiptir. Bulmak için bash içinde which ghc yazın. Sonuç gerçekten bir sembolik bağlantı ise, basitçe silin. Özel bir komut dosyasıysa, daha sonra ihtiyaç duymanız durumunda silme yerine yeniden adlandırmak isteyebilirsiniz.

+0

böyle şeyler kaçınmayı tercih ediyorum – Drew

+1

ghc esansiyel komut 'tip ghc' olduğu için ghc puan. Kabuğunuz önbelleğe alınmış eski 'ghc 'yoluna sahip olabilir. Bash'da, önbelleği temizlemek için 'hash -r' yapabilirsiniz. Ya da yeni bir kabuk başlatabilirsin. Sorunumu çözen – kosmikus

+0

@kosmikus, teşekkürler! Eğer bir cevap vermek istiyorsan kabul edeceğim. – Drew