shebang

Rubyプログラム

shebang

今回始めて知ったshebang

スクリプトを単体で実行するためのおまじないだそうです。これを実行ファイルの頭に#!/usr/bin/env rubyと記述ればrubyで単体実行してくれるそうです。


今までrubyのファイルは拡張子に.rbをつけてるからrubyファイルとして実行できているものだと思っていましたが、それはどうやら違うようです。

% ruby ファイル名.rb

で実行するときのrubyコマンドによってインタプリタ言語を指定してファイルの実行をしていると理解しました。

試しにshebangを外して

% ruby ファイル名

拡張子を外したところ実行

% ファイル名

rubyコマンドを抜くことで、他の言語として読み込んでる?せいか
syntax errorなど諸々が発生。

じゃあ一体何の言語で読み取ろうとしているのでしょうか??
また時間のあるときに調べよう。

shebangのパスが各コマンドの入っているパスを記入するのであれば

which rubyによって表示されたパスを

#!~/.rbenv/shims/ruby

こんな感じに書けば実行されるのかなと思ったりしたんですがどうも違うようで、
envはユーティリティソフトウェアであるため、今回のshebangインタプリタ言語で利用する際にはこちらを指定しなければいけないと判明。

餅屋は餅屋へってことですね。