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

受到“ 从内部获取Bash脚本的源目录 ”的启发,Ruby的方法是什么?

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

使用__dir__

从Ruby 2.0开始, __dir__是最简单的方法。 它

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

请参阅__dir__文档,以及“ 为什么__FILE__大写和__dir__小写? ”。

使用__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 

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