2009-03-31 9 views
8

Jestem na OS X (z bash) i newbie na unixie. Chcę wiedzieć, czy można zmienić jakiś plik tak, aby uruchamiać program ruby, nie potrzebuję "ruby file.rb", ale zamiast tego mogę po prostu uruchomić "ruby.rb".Uruchamianie Ruby bez prefiksu "Ruby"

Czy istnieje powód, aby tego NIE ROBIĆ?

Dzięki!

Odpowiedz

25

Tak, możesz to zrobić.

Zakładając ruby.rb ma coś takiego w nim:

#!/usr/bin/env ruby 
puts 'Hello world' 

W linii komend: chmod +x ruby.rb

To sprawia, że ​​wykonywalny.

Następnie można wykonać go tak:

./ruby.rb 

Aby uzyskać więcej informacji zobacz wikibooks.

EDIT (Jörg W Mittag) Stosując #!/usr/bin/env ruby zamiast #!/usr/bin/ruby jako linia shebang jest bardziej mobilny, ponieważ na każdym Unix wytwarzanego w ciągu ostatnich 20 lat, komenda env wiadomo żyć /usr/bin, podczas instalacji Ruby typowo wszędzie wokoło. (Np., Moje życie w /home/joerg/jruby-1.2.0/bin/ruby.)

4

chmod + x/ścieżka/do/pliku

Nie ma powodu, aby nie zrobić, tak długo, jak prefiks tłumacza z shebang (#!/Usr/local/rubin czy cokolwiek ścieżka jest na OSX). Powłoka nie dba o to.

2

Umieść poprawny shebang jako pierwszy wiersz twojego pliku. ex:

#!/usr/bin/ruby 

w powłoce, zrobić plik wykonywalny

chmod +x file 
6

Jak wspominają inni, chcesz mieć shebang (#!) wiersz na początku i zmienić uprawnienia do pliku wykonywalnego.

Polecam używanie #!/usr/bin/env ruby zamiast ścieżki bezpośrednio do Ruby, ponieważ sprawi, że twój skrypt będzie bardziej przenośny dla systemów, które mogą mieć Ruby zainstalowane w różnych katalogach; env przeszuka Twoją ścieżkę wyszukiwania, a więc znajdzie tę samą Ruby, którą wykonasz, jeśli uruchomisz ruby w linii poleceń.Oczywiście, będzie to mieć problemy, jeśli env jest w innym miejscu, ale jest znacznie bardziej powszechne dla env być na /usr/bin/env niż Ruby być na /usr/bin/ruby (może to być w /usr/local/bin/ruby, /opt/bin/ruby, /opt/local/bin/ruby itp)

#!/usr/bin/env ruby 
puts "Hello!" 

I uczynić go wykonywalnym:

chmod +x file.rb 
+0

+1 za upewnienie się, że linia Shebang użyje dowolnego elementu Ruby na twojej ścieżce. Podczas aktualizacji czasami umieszcza nową wersję w zupełnie innym miejscu niż bieżąca instalacja. –

+0

Tak, dlatego to opublikowałem; na pytanie odpowiedziało już kilka osób, ale czułem, że ważne jest, aby wspomnieć o/usr/bin/env z tego powodu. –

3

Jeśli chcesz zrobić coś bardziej skomplikowanego z uruchomieniem tej aplikacji, zawsze można stworzyć skrypt:

#! /bin/sh 
ruby ruby.rb 

Jeśli zapiszesz go run_script, po prostu trzeba chmod + x to, jak wspomniano wcześniej, a następnie wykonaj następujące polecenie:

$ ./run_script 

wątpię to będzie bardziej przydatne w danej sytuacji niż rozwiązania już wspomniane, ale warto zwrócić uwagę na kompletność.