Ruby脚本可以告诉它位于哪个目录吗?


Answers:


96

对于旧版本的Ruby(<2.0),可以使用以下命令找到正在运行的脚本:

  • File.dirname(__FILE__)-相对路径;要么
  • File.expand_path(File.dirname(__FILE__)) -绝对路径。

对于较新版本的Ruby,请尝试:

  • __dir__

__dir__即使调用,使用也会返回脚本路径Dir.chdir。相反,使用较旧的语法可能不会返回脚本的路径。


“ File.expand_path(File.dirname(FILE))”在查找绝对路径时很有用
Kapidis


6

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

-9

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


谢谢!适合我的Linux特定常识。
java.is.for.desktop,2010年

那是主目录,而不是当前工作目录或脚本所在的目录。
Matthew Flaschen

B * gger,睡眠不足会做到这一点。我的意思是ENV [“ PWD”]。但是爸的答案要好得多。
Shadowfirebird

11
这不只是流程的工作目录吗?我以为OP想要包含脚本的目录。
D.Shawley,2010年

不,该过程可以从其他地方执行外部脚本。
java.is.for.desktop,2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.