2011-10-10 7 views
8

Nigdy nie miałem tego problemu, zanim z moich innych maszyn, ale z jakiegoś powodu w zsh gdy wpisujęzsh `` która rvm` lub które gem` zwraca zawartość funkcyjnych zamiast ścieżki

which gem 

lub

which rvm 

uzyskać zawartość funkcyjne:

gem() { 
local result 
command gem "[email protected]" 
result="$?" 
hash -r 
return $result 
} 

zamiast niego jest ścieżka. Dla mojego życia nie mogę zrozumieć, dlaczego tak się dzieje.

Jeśli przełączę się na bash, nie mam takich problemów.

Odpowiedz

8

Jest to normalne zachowanie dla Zsh. Wbudowany which jest odpowiednikiem whence -c, który pokazuje definicje funkcji. Użyj whence, prawdopodobnie z kombinacją opcji, które nie obejmują -f lub -c, jeśli tego nie chcesz. Na przykład whence -w gem wyświetli gem: function. Jeśli chcesz wyszukać tylko zewnętrzne pliki wykonywalne (a nie aliasy, wbudowane, zarezerwowane słowa lub funkcje), użyj whence -v.

+3

Dzięki. To zdecydowanie mnie oczyściło. Znalazłem używając opcji '-p' z' which' dało mi oczekiwany rezultat. To samo wydaje się prawdziwe w przypadku użycia '-p' z' whence'. – user770148

Powiązane problemy