我使用 Ruby 1.9.3 编写了几个用于系统管理的小型 Ruby 脚本。在一个脚本中,我使用:
File.dirname(__FILE__)
获取脚本文件的目录。这会返回一个相对路径,但是当我从第二个脚本调用脚本时会File.dirname
返回一个绝对路径。
Ruby Doc在其示例中列出了绝对返回路径,而我在Ruby 论坛上找到了一个讨论,用户说dirname
应该只返回相对路径。
我正在使用 Ruby 论坛建议的解决方案File.expand_path
来始终获取绝对路径,如下所示:
File.expand_path(File.dirname(__FILE__))
但是有没有办法使行为dirname
一致?
更新:
为了扩展 Janathan Cairs 的回答,我制作了两个脚本:
s1.rb:
puts "External script __FILE__: #{File.dirname(__FILE__)}"
s0.rb:
puts "Local script __FILE__: #{File.dirname(__FILE__)}"
require './s1.rb'
运行 ./s0.rb 会给出以下输出:
Local script __FILE__: .
External script __FILE__: /home/kenneth/Pictures/wp/rip_vault