Ruby脚本可以告诉它所在的目录吗?

时间:2010-02-05 11:14:36

标签: ruby scripting path directory environment-variables

受到“Getting the source directory of a Bash script from within”的启发,Ruby的方法是什么?

4 个答案:

答案 0 :(得分:57)

File.dirname(__FILE__)将为您提供相对于正在运行的脚本的路径。 File.expand_path(File.dirname(__FILE__))将为您提供绝对路径。

答案 1 :(得分:45)

使用__dir__

从Ruby 2.0开始,__dir__是获得此功能的最简单方法。它

  

返回文件目录的规范化绝对路径   从中调用此方法。

请参阅__dir__文档和“Why is __FILE__ uppercase and __dir__ lowercase?”。

答案 2 :(得分:3)

使用__dir__

File.dirname(__FILE__)不是获取存储脚本的目录的正确方法。

在开始工作目录和脚本文件的目录是相同的,但它可能会改变。

例如:

Dir.chdir('..') do
    puts __dir__
    puts File.expand_path(File.dirname(__FILE__))
end

存储在运行它的/Desktop/tmp中的脚本文件将提供输出

/home/mateusz/Desktop/tmp
/home/mateusz/Desktop

答案 3 :(得分:-5)

对于我来说,ENV [“PWD”]对我来说似乎是最简单的方法。我不知道与操作系统无关的方式。