2009-03-31 4 views
8

Ich bin auf OS X (mit Bash) und ein Neuling bei Unix. Ich möchte wissen, ob es möglich ist, eine Datei so zu ändern, dass ich ein Ruby-Programm brauche, ich brauche nicht "ruby file.rb", sondern kann einfach "ruby.rb" ausführen.Starten von Ruby ohne das Präfix "Ruby"

Gibt es einen Grund, dies NICHT zu tun?

Danke!

Antwort

25

Ja, Sie können dies tun.

ruby.rb Unter der Annahme hat so etwas in ihm:

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

in der Befehlszeile: chmod +x ruby.rb

Dies macht es ausführbar.

Dann können Sie es wie folgt aus:

./ruby.rb 

Weitere Details wikibooks sehen.

EDIT (Jörg W Mittag): Mit #!/usr/bin/env ruby anstelle von #!/usr/bin/ruby als shebang Linie ist tragbar, denn auf jedem in den letzten 20 Jahren hergestellt Unix, der env Befehl in /usr/bin zu leben ist bekannt, während Rubin Installationen typischerweise überall. (Z. B. meins lebt in /home/joerg/jruby-1.2.0/bin/ruby.)

4

chmod + x/path/to/file

kein Grund, es nicht zu tun, solange Sie den Interpreter mit einem shebang (Präfix #!/Usr/local/Rubin oder was auch immer der Weg, auf OSX ist). Der Schale ist es egal.

2

Platzieren Sie den richtigen Shebang als erste Zeile Ihrer Datei. ex:

#!/usr/bin/ruby 

in der Schale, die Datei ausführbar machen

chmod +x file 
6

Wie andere erwähnt haben, können Sie eine shebang (#!) Zeile am Anfang haben wollen, und die Berechtigungen zu ausführbaren ändern.

Ich würde empfehlen, #!/usr/bin/env ruby anstelle des Pfades zu Ruby direkt zu verwenden, da es Ihr Skript portabler zu Systemen macht, die Ruby in verschiedenen Verzeichnissen installiert haben können; env wird in Ihrem Suchpfad suchen, und so wird es dasselbe Ruby finden, das Sie ausführen würden, wenn Sie in der Befehlszeile ruby ausführen würden.Natürlich wird diese Probleme haben, wenn env an einem anderen Ort, aber es ist sehr viel häufiger für env bei /usr/bin/env zu sein als für Ruby bei /usr/bin/ruby sein (es /opt/bin/ruby in /usr/local/bin/ruby, sein kann, /opt/local/bin/ruby usw.)

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

Und es ausführbar machen:

chmod +x file.rb 
+0

+1, um sicherzustellen, dass Ihre Shebang-Linie den Ruby-Pfad verwendet, den Sie gerade verwenden. Wenn Sie ein Upgrade durchführen, wird die neue Version manchmal an einem anderen Ort als der aktuellen installiert. –

+0

Ja, deshalb habe ich das gepostet; Die Frage wurde bereits von mehreren Personen beantwortet, aber ich fühlte, dass es wichtig ist,/usr/bin/env aus diesem Grund zu erwähnen. –

3

Wenn Sie etwas komplizierter mit fliessendem diese Anwendung tun möchten, können Sie immer ein Shell-Skript erstellen:

#! /bin/sh 
ruby ruby.rb 

Wenn Sie es run_script speichern, müssen Sie nur noch chmod + x es, wie bereits erwähnt, dann führen Sie den folgenden Befehl ein:

$ ./run_script 

Ich bezweifle, dass dies in Ihrer speziellen Situation nicht mehr von Nutzen sein wird als die bereits erwähnten Lösungen, aber es ist der Vollständigkeit halber erwähnenswert.