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 zum Ausführen eines Ruby-Programms "ruby file.rb" nicht benötige, sondern stattdessen einfach "ruby.rb" ausführen kann.
Gibt es einen Grund, dies NICHT zu tun?
Danke!
Ja, Sie können das tun.
Nehmen wir an, dass ruby.rb
etwas ähnliches in sich hat:
In der Befehlszeile: chmod +x ruby.rb
Dies macht es ausführbar.
Dann können Sie es wie folgt ausführen:
%Vor%Weitere Einzelheiten finden Sie unter Wikibooks .
BEARBEITEN (Jörg W Mittag): Verwenden von #!/usr/bin/env ruby
anstelle von #!/usr/bin/ruby
, da die Shebang-Linie portabler ist, weil der env
-Befehl auf jedem in den letzten 20 Jahren produzierten Unix in% co_de lebt %, während Ruby-Installationen in der Regel überall sind. (ZB leben meine in /usr/bin
.)
Wie andere bereits erwähnt haben, möchten Sie am Anfang eine shebang ( #!
) Zeile haben und die Berechtigungen in ausführbare Dateien ändern.
Ich würde empfehlen, #!/usr/bin/env ruby
anstelle des Pfades zu Ruby direkt zu verwenden, da dies Ihr Skript auf Systeme übertragbar macht, auf denen Ruby in verschiedenen Verzeichnissen installiert sein kann; env
sucht in Ihrem Suchpfad und findet daher den gleichen Ruby, den Sie ausführen würden, wenn Sie ruby
in der Befehlszeile ausführen würden. Natürlich wird dies Probleme haben, wenn env
an einem anderen Ort ist, aber es ist viel häufiger, dass env
bei /usr/bin/env
ist als bei Ruby bei /usr/bin/ruby
(möglicherweise in /usr/local/bin/ruby
, /opt/bin/ruby
, /opt/local/bin/ruby
, usw.)
Und mach es ausführbar:
%Vor%Wenn Sie beim Ausführen dieser Anwendung etwas komplizierter machen möchten, können Sie immer ein Shell-Skript erstellen:
%Vor%Wenn Sie es in run_script speichern, müssen Sie es nur wie zuvor erwähnt chmod + x ausführen und dann den folgenden Befehl ausführen:
%Vor%Ich bezweifle, dass dies in Ihrer speziellen Situation nützlicher sein wird als die bereits erwähnten Lösungen, aber es ist der Vollständigkeit halber erwähnenswert.