##Rubyをシェルスクリプトっぽく実行してみよう
動作環境:os x yosemite
ruby 2.0.0p481
1,rubyの場所を調べる
ターミナルでwhich ruby
を実行。結果をメモ。
実行結果例:/usr/bin/ruby
2,スクリプトを書く
このとき1行目に#!/usr/bin/ruby(さっきメモったところ)
を入れる
#!/usr/bin/ruby
puts ("Hello World")
3,実行権限をつける
chmod +x HelloWord.rb
Ubuntuでやったときはchmod u+x HelloWorld.rb
じゃないとエラーが出た
4,実行
./HelloWorld.rb
また、このように実行する場合拡張子の.rbをとってHelloWorld
って名前でスクリプト書いて実行権限つけても問題ない
あと、rbenv とか使ってるとrubyの場所が少し変わるけど特に問題ない
###追記:
-
ruby自体のPATHを意識したくない場合は
#!/usr/bin/env ruby
と書くこともできるそうです。ただ、これだと動かない環境もあるようですね。 -
env
を使わずにすむように、冒頭をシェルスクリプトとしてRuby に実行させる方法があるようです。
#!/bin/sh
exec ruby -S -x "$0" ${@+"$@"}
#!ruby
ここ以下はrubyとして実行される
また、[Ruby 2.0.0のリファレンスマニュアル](http://docs.ruby-lang.org/ja/2.0.0/doc/spec=2frubycmd.html)だとこんな感じ
>```sh:
#!/bin/sh
exec ruby -S -x $0 "$@"
#! ruby
#ここ以下にrubyのスクリプト
私はシェルスクリプトに詳しくないので良くわからないが、詳しく知りたい人はリファレンスマニュアルの方に詳しく書いてあります。