I'm on OS X (with bash) and a newbie at unix. I want to know if it's possible to amend some file such that to run a ruby program, I don't need "ruby file.rb", but instead can just run "ruby.rb".
Is there a reason NOT to do this?
Thanks!
I'm on OS X (with bash) and a newbie at unix. I want to know if it's possible to amend some file such that to run a ruby program, I don't need "ruby file.rb", but instead can just run "ruby.rb".
Is there a reason NOT to do this?
Thanks!
chmod +x /path/to/file
No reason not to do it, as long as you prefix the interpreter with a shebang (#!/usr/local/ruby or whatever the path is on OSX). The shell doesn't care.
Yes you can do this.
Assuming ruby.rb
has something like this in it:
#!/usr/bin/env ruby
puts 'Hello world'
At the command line: chmod +x ruby.rb
This makes it executable.
Then you can execute it like this:
./ruby.rb
For more details see wikibooks.
EDIT (Jörg W Mittag): Using #!/usr/bin/env ruby
instead of #!/usr/bin/ruby
as the shebang line is more portable, because on every Unix produced in the last 20 years, the env
command is known to live in /usr/bin
, whereas Ruby installations are typically all over the place. (E.g., mine lives in /home/joerg/jruby-1.2.0/bin/ruby
.)
Place the correct shebang as the first line of your file. ex:
#!/usr/bin/ruby
in the shell, make the file executable
chmod +x file
As others have mentioned, you want to have a shebang (#!
) line at the beginning, and change the permissions to executable.
I would recommend using #!/usr/bin/env ruby
instead of the path to Ruby directly, since it will make your script more portable to systems that may have Ruby installed in different directories; env
will search in your search path, and so it will find the same Ruby that you would execute if you ran ruby
on the command line. Of course, this will have problems if env
is in a different location, but it is much more common for env
to be at /usr/bin/env
than for Ruby to be at /usr/bin/ruby
(it may be in /usr/local/bin/ruby
, /opt/bin/ruby
, /opt/local/bin/ruby
, etc)
#!/usr/bin/env ruby
puts "Hello!"
And make it executable:
chmod +x file.rb
If you want to do anything more complicated with running this application, you can always create a shell script:
#! /bin/sh
ruby ruby.rb
If you save it to run_script, you just have to chmod +x it as mentioned previously, then execute the following command:
$ ./run_script
I doubt this will be any more useful in your particular situation than the solutions already mentioned, but it's worth noting for completeness's sake.