結論
$PROGRAM_NAME はmainの実行ファイル名。
__FILE__ はそのコードが書かれているファイルの名前。
検証
以下をを同じディレクトリにおいて実行。
test.rb
#!/bin/env ruby require './test_class' p $PROGRAM_NAME p __FILE__ p 'Now call class.' tc = TestClass.new tc.name
test_class.rb
class TestClass def name() p $PROGRAM_NAME p __FILE__ end end
実行結果
$ ./test.rb "./test.rb" "./test.rb" "Now call class." "./test.rb" "/usr/local/vldmp/script/test/test_class.rb"