„która” lokalizacja różni się od lokalizacji wykonywalnej

3

Próbuję zainstalować ruby ​​/ rubygems w najnowszej wersji 10.6. Do instalacji użyłem MacPorts ruby po zauważeniu, że moja wersja jest stara. ruby został zainstalowany w /opt/local/bin.

Zmieniłem .bash_profile i dodał:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

Kiedy ja echo $PATH, Dostaję:

/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

Więc kiedy piszę which ruby Dostaję:

/opt/local/bin/ruby

Który działa poprawnie. Jednak kiedy piszę which gem Dostaję:

/opt/local/bin/gem

Podczas używania gem -environment Dostaję ( gem znajduje się w powyższym katalogu):

-bash: /usr/bin/gem: No such file or directory

Jestem całkowicie otwarty na odinstalowanie wszystkiego i rozpoczęcie od nowa, jeśli to konieczne. Po prostu nie jestem pewien, dlaczego wciąż próbuje go złapać /usr/bin!

Nic
źródło

Odpowiedzi:

4

Domyślny gem jest funkcją i są wywoływane przed $ PATH, a także przed poleceniem hash.

Spróbuj grać hash (lub wyczyszczenie go hash -r ) aby sprawdzić, czy twoja ścieżka nie mówi, w jaki klejnot zadzwonić.

type gem potwierdzi, czy nasz klejnot jest naprawdę funkcją ...

bmike
źródło
1
Aby rozwinąć trochę: jeśli problemem jest przestarzała lokalizacja hash hash -d gem wyczyści wpis dla gem, po czym wystąpienie podane przez which gem powinien być taki, który zostanie wywołany. Otwieranie nowego bash instancja powinna również usunąć polecenia mieszania.
PLL
0

Co za bałagan. W końcu usunąłem wszystkie wersje ruby ​​i MacPorts i skompilowałem 1.9.2 ze źródła. Wszystko działa teraz dobrze.

Nic
źródło