2009-03-31 23 views
8

Estoy en OS X (con bash) y soy un novato en Unix. Quiero saber si es posible modificar algún archivo para que ejecute un programa de ruby, no necesito "ruby file.rb", sino que puedo ejecutar "ruby.rb".Lanzamiento de Ruby sin el prefijo "Ruby"

¿Hay alguna razón para NO hacer esto?

Gracias!

Respuesta

25

Sí, puedes hacerlo.

Suponiendo ruby.rb tiene algo como esto en él:

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

En la línea de comandos: chmod +x ruby.rb

Esto hace que sea ejecutable.

A continuación, puede ejecutar de esta manera:

./ruby.rb 

Para más detalles ver wikibooks.

EDITAR (Jörg W Mittag): El uso de #!/usr/bin/env ruby en lugar de #!/usr/bin/ruby como la línea shebang es más portátil, ya que en todos los Unix producido en los últimos 20 años, el comando env se sabe que viven en /usr/bin, mientras que las instalaciones de Ruby son típicamente por todo el lugar. (Por ejemplo, la mía vive en /home/joerg/jruby-1.2.0/bin/ruby.)

4

chmod + x/ruta/a/archivo

No hay razón para no hacerlo, siempre y cuando se anteponga el intérprete con un tinglado (#!/Usr/local/rubí o cualquiera que sea el camino es en OSX) Al caparazón no le importa

2

Coloque el shebang correcto como la primera línea de su archivo. por ejemplo:

#!/usr/bin/ruby 

en la cáscara, hacen que el archivo ejecutable

chmod +x file 
6

Como otros han mencionado, que desea tener un tinglado (#!) línea al principio, y cambiar los permisos de ejecutable.

Recomendaría usar #!/usr/bin/env ruby en lugar de la ruta a Ruby directamente, ya que hará que su script sea más portátil para los sistemas que pueden tener instalado Ruby en directorios diferentes; env buscará en su ruta de búsqueda, por lo que encontrará el mismo Ruby que ejecutaría si ejecutara ruby en la línea de comandos.Por supuesto, esto tendrá problemas si env está en una ubicación diferente, pero es mucho más común para env estar en /usr/bin/env que para Ruby a estar en /usr/bin/ruby (que puede estar en /usr/local/bin/ruby, /opt/bin/ruby, /opt/local/bin/ruby, etc)

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

y que sea ejecutable:

chmod +x file.rb 
+0

+1 para asegurarte de que tu línea shebang usará lo que Ruby esté en tu camino. Cuando actualiza, a veces pone la nueva versión en un lugar completamente diferente al de la instalación actual. –

+0

Sí, es por eso que publiqué esto; la pregunta ya fue respondida por varias personas, pero sentí que era importante mencionar/usr/bin/env por ese motivo. –

3

Si usted quiere hacer algo más complicado con el funcionamiento de esta aplicación, siempre se puede crear un script de shell:

#! /bin/sh 
ruby ruby.rb 

Si lo guarda a run_script, sólo hay que chmod + x como se mencionó anteriormente, a continuación, ejecute el siguiente comando:

$ ./run_script 

Dudo que esto vaya a ser más útil en su situación particular de las soluciones ya mencionadas, pero vale la pena señalar para mayor completud.