如何在Ruby中获取当前工作目录的绝对路径?

问题描述 投票:0回答:7

我在 Windows 上运行 Ruby,但我不知道这是否会产生影响。我想做的就是获取当前工作目录的绝对路径。 irb 可以做到这一点吗?显然从脚本中可以使用

File.expand_path(__FILE__)

但是从 irb 我尝试了以下操作并收到“权限被拒绝”错误:

File.new(Dir.new(".").path).expand
ruby irb working-directory
7个回答
581
投票

Dir.pwd
是当前工作目录

http://ruby-doc.org/core/Dir.html#method-c-pwd


199
投票

File.expand_path File.dirname(__FILE__)
将返回与调用此命令的文件相关的目录。

但是

Dir.pwd
返回工作目录(结果与在终端中执行
pwd
相同)


70
投票

至于相对于当前执行脚本的路径,从Ruby 2.0开始也可以使用

__dir__

所以这基本上是一样的

File.dirname(__FILE__)

6
投票

这将为您提供当前文件的工作目录。

File.dirname(__FILE__)

示例:

当前文件:“/Users/nemrow/SITM/folder1/folder2/amazon.rb”

结果:“/Users/nemrow/SITM/folder1/folder2”


6
投票

通过此您可以获得位于任何目录中的任何文件的绝对路径。

File.join(Dir.pwd,'some-dir','some-file-name')

这会回来

=> "/User/abc/xyz/some-dir/some-file-name"

5
投票

如果想获取当前rb文件所在目录的完整路径:

File.expand_path('../', __FILE__)

0
投票

如果您不打算在 Windows 或 *nix 以外的任何其他平台上运行代码。

`pwd`.chop
© www.soinside.com 2019 - 2024. All rights reserved.