Запуск Ruby без префикса "Ruby" - PullRequest
10 голосов
/ 31 марта 2009

Я на OS X (с bash) и новичок в Unix. Я хочу знать, возможно ли изменить какой-либо файл так, чтобы он запускал программу ruby, мне не нужен "ruby file.rb", а вместо этого можно просто запустить "ruby.rb".

Есть ли причина НЕ делать этого?

Спасибо!

Ответы [ 5 ]

26 голосов
/ 31 марта 2009

Да, вы можете сделать это.

Предполагая, что ruby.rb имеет что-то вроде этого:

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

В командной строке: chmod +x ruby.rb

Это делает его исполняемым.

Тогда вы можете выполнить это так:

./ruby.rb

Подробнее см. вики-книги .

EDIT (Jörg W Mittag): использование #!/usr/bin/env ruby вместо #!/usr/bin/ruby в качестве строки shebang является более переносимым, поскольку в каждом Unix, выпущенном за последние 20 лет, команда env, как известно, живет в /usr/bin, в то время как установки Ruby, как правило, повсюду. (Например, моя живет в /home/joerg/jruby-1.2.0/bin/ruby.)

7 голосов
/ 31 марта 2009

Как уже упоминалось, вы хотите, чтобы в начале была строка shebang (#!), и измените разрешения на исполняемый файл.

Я бы рекомендовал использовать #!/usr/bin/env ruby вместо пути к Ruby напрямую, так как это сделает ваш сценарий более переносимым к системам, в которых Ruby может быть установлен в разных каталогах; env будет искать в вашем пути поиска, и поэтому он найдет тот же Ruby, который вы бы выполнили, если бы вы запустили ruby в командной строке. Конечно, это будет иметь проблемы, если env находится в другом месте, но для env гораздо чаще будет /usr/bin/env, чем для Ruby /usr/bin/ruby (может быть в /usr/local/bin/ruby /opt/bin/ruby, /opt/local/bin/ruby и т. Д.)

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

И сделать его исполняемым:

chmod +x file.rb
4 голосов
/ 31 марта 2009

chmod + x / path / to / file

Нет причин не делать этого, если вы переводите интерпретатор с помощью шебанга (#! / Usr / local / ruby ​​или любого другого пути в OSX). Оболочка не волнует.

3 голосов
/ 31 марта 2009

Если вы хотите сделать что-то более сложное с запуском этого приложения, вы всегда можете создать сценарий оболочки:

#! /bin/sh
ruby ruby.rb

Если вы сохраните его в run_script, вам просто нужно выполнить chmod + x, как упоминалось ранее, а затем выполнить следующую команду:

$ ./run_script

Я сомневаюсь, что это будет более полезным в вашей конкретной ситуации, чем уже упомянутые решения, но для полноты картины стоит отметить.

2 голосов
/ 31 марта 2009

Поместите правильный шебанг в качестве первой строки вашего файла. например:

#!/usr/bin/ruby

в оболочке, сделать файл исполняемым

chmod +x file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...