Joel VanderWerf <vjoel / PATH.Berkeley.EDU> writes:

> Does anyone know why this happens?
>
> $ irb
> irb(main):001:0> Dir.chdir '~'
> => 0
> irb(main):002:0> Dir.chdir '~'
> Errno::ENOENT: No such file or directory - ~
>          from (irb):2:in `chdir'
>          from (irb):2
> $ ruby -v
> ruby 1.8.1 (2003-12-25) [i686-linux]

You must be starting out in a directory with a ~ subdirectory that
does not itself have a ~ subdirectory. Thus the first time you change
to directory ~ it succeeds, but the second time it fails.

  $ mkdir \~
  $ irb
  irb(main):001:0> Dir.chdir '~'
  => 0
  irb(main):002:0> Dir.pwd
  => "/home/tim/ruby/~"
  irb(main):003:0> Dir.chdir '~'
  Errno::ENOENT: No such file or directory - ~
          from (irb):3:in `chdir'
          from (irb):3

In Ruby, you can use use ENV['HOME'], rather than ~, to refer to your
home directory, if that's what you intended. However, Dir.chdir
defaults to your home directory, so you don't actually need that in
this case.

  $ irb
  irb(main):001:0> Dir.pwd
  => "/home/tim/ruby"
  irb(main):002:0> Dir.chdir
  => 0
  irb(main):003:0> Dir.pwd
  => "/home/tim"

I hope this helps,

Tim