为什么没有Dir.exist?'如果路径以'〜'?开头

时间:2017-06-09 09:22:15

标签: ruby

我对正在发生的事情感到困惑。

dir = "~/Downloads"
#=> "~/Downloads"

`ls #{dir}`
#=> "110912-font-awesome.zip\n"

Dir.exist? dir
#=> false

为什么会这样?

2 个答案:

答案 0 :(得分:5)

因为当你使用`ls`时你运行一个shell命令而~与shell有关(我认为它是$HOME变量的快捷方式)。但Dir.exist?是纯粹的红宝石,它对shell一无所知,因此目录不存在。

无论如何,这是有效的

Dir.exist?(ENV['HOME'])

答案 1 :(得分:4)

File.expand_path可以展开~

dir = File.expand_path('~/Downloads')
#=> /home/stefan/Downloads

Dir.exist?(dir)
#=> true