Murayama blog.

プログラミング教育なブログ

実行スクリプトの探索パス

rubyの実行コマンドのオプションについて勉強しました。地味にまとめます。


参考書籍です。この本読んでRubyを勉強します。

Ruby逆引きハンドブック

Ruby逆引きハンドブック

-Sオプション

-Sオプションをつけた場合、実行スクリプトの探索パスから実行スクリプトを検索します。
実行スクリプトの検索パスは、
環境変数RUBYPATHと、環境変数PATHに指定されたディレクトリが対象になります。


例えば、以下のディレクトリ構成になっていて、
カレントディレクトリがrubyprjだとします。


rubyprj
  |-- dir1
  |  `-- hello.rb
  `-- dir2

※hello.rbはHello world!を出力するだけのスクリプトです。


以下のようにコマンドを実行すると、カレントディレクトリ(rubyprj)に実行スクリプトが存在しないためエラーになります。

rubyprj% ruby hello.rb
ruby: No such file or directory -- hello.rb (LoadError)


-Sオプションを指定せずに、相対パスでディレクトリを指定するならこんなかんじでもOKです。

rubyprj% ruby dir1/hello.rb
Hello world!


次に、-Sオプションによる実行スクリプトの検索パス指定を試してみます。
環境変数RUBYPATHにdir1を設定します。

RUBYPATH=/Users/xxx/rubyprj/dir1
export RUBYPATH


さきほどエラーになったコマンドを再度実行してみます。

rubyprj% ruby hello.rb
Hello world!


上手く動作しました。
環境変数RUBYPATHを使いましたが、環境変数PATHでも同様に動作します。
ただし、RUBYPATHに指定されたものが優先されます。