Ruby - 获取正在执行的文件

Vic*_*aga 35 ruby

我正在尝试获取传递给ruby解释器的脚本的引用.例如,如果我正在运行,ruby foo.rb我想获得对该foo.rb文件的引用.

我认为在Python中可以通过它访问sys.argv[0].可以调用,__FILE__但这不是我正在寻找的解决方案,因为__FILE__产生了当前执行代码所在的文件.

有没有办法做到这一点?

Vic*_*aga 45

我发现$0是用于启动程序的文件的名称.很容易.

  • 另外$ PROGRAM_NAME (11认同)

pea*_*kxu 42

使用File类中的方法来操作FILE

在test.rb里面,我有

puts __FILE__
puts File.dirname(__FILE__)
puts File.basename(__FILE__)
Run Code Online (Sandbox Code Playgroud)

当你跑步时

ruby a/b/test.rb
Run Code Online (Sandbox Code Playgroud)

你得到

a/b/test.rb
a/b
test.rb
Run Code Online (Sandbox Code Playgroud)


iti*_*skj 5

让我$0为读者添加一个官方链接。它是 Ruby 本身提供的全局变量之一。

http://ruby-doc.org/core-2.0.0/doc/globals_rdoc.html

包含正在执行的脚本的名称。可以转让。