#!行で見かけるenvってなんだ?

#!/usr/bin/env ruby

#!*1行により、スクリプトをコマンドのように実行することが出来る。
しかし、#!行は絶対パスで記述する必要があるために実行環境が異なるとrubyコマンドを実行出来ない可能性がある*2
そこで、実行環境に依存せずrubyコマンドを実行させるためにenvコマンド*3を用いる。
envコマンドでrubyコマンドに環境変数(実行環境のPATH)をセットすることにより、実行環境が異なる場合でもrubyコマンドを実行することが可能となる。

そうそう、#!行では1つしかオプションを使えない、らしい。

#!/usr/bin/env ruby -Ke

とは指定出来ないとかとか。

*1:shebang

*2:rubyコマンドのPATHが/usr/binであるとは限らない

*3:実行するコマンドに環境変数を一時的にセットするコマンド