Używam Ruby 1.8.7 na OS X. Gdzie znajduje się interpreter Ruby? Moim celem jest dowiedzieć się więcej o Ruby, interpretowanych językach i interpretacji/parsowania.Gdzie znajduje się interpreter Ruby?
Odpowiedz
Możesz uruchomić which ruby
, aby dowiedzieć się, gdzie rubin zostanie wykonany, jeśli wpiszesz w Terminalu ruby
.
Jeśli chcesz znaleźć więcej informacji się o wykonywalnego, można uruchomić:
$ ls -l $(which ruby)
lrwxr-xr-x 1 root wheel 76 Nov 8 12:56 /usr/bin/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
Oznacza to, że wykonanie which ruby
i przekazać wyniki, które w ls -l
, który pokaże, że rzeczywiście dowiązanie symboliczne do pliku binarnego w strukturze Ruby. Można również użyć file
aby dowiedzieć się, jaki rodzaj pliku to:
$ file $(which ruby)
/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/ruby (for architecture i386): Mach-O executable i386
Jeśli chcesz się upewnić, że wykonanie rubin, który jest w ścieżce użytkownika ze skryptu, zamiast sztywno gdzie Ruby jest taka, że można użyć następującą dyrektywę interpretera na górze skryptu:
#!/usr/bin/env ruby
To działa, ponieważ prawie wszystkie nowoczesne systemy mają plik wykonywalny w /usr/bin/env
który będzie wykonywał narzędzia, które przechodzą do niej opartej na swojej drodze; więc zamiast kodowania twardego /usr/bin/ruby
w swoim skrypcie, możesz pozwolić, aby env
przeszukała Twoją ścieżkę.
whereis ruby
w oknie terminala powie
Powinieneś go znaleźć pod System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
i dowiązane do /usr/bin/ruby
.
po uruchomieniu which ruby
poda dokładną lokalizację rubinu używanego, jeśli istnieje jedna lub więcej implementacji w systemie.
Ogólnie rzecz biorąc, 'który' jest bardziej niezawodny niż' whereis'. 'który' znajdzie ten, który faktycznie znajduje się na twojej ścieżce, podczas gdy' whereis' będzie wyglądał w pewnych standardowych katalogach; jeśli masz niestandardowe katalogi na swojej ścieżce (jak '/ opt/local/bin' dla MacPorts),' whereis' nie znajdzie tego, czego szukasz. –