In article <200511080321.jA83LMH5022935 / rubyforge.org>,
  noreply / rubyforge.org writes:

> Summary: Pathname.realpath fails on non-existant path
>
> Initial Comment:
> $ ruby -w -r pathname -e 'puts Pathname.new(ARGV[0]).realpath'  /asdfasdf
> /usr/lib/ruby/1.8/pathname.rb:341:in `lstat': No such file or directory - /asdfasdf (Errno::ENOENT)
>         from /usr/lib/ruby/1.8/pathname.rb:341:in `realpath'
>         from -e:1

It is intended because POSIX.

| ERRORS
| 
|     The realpath() function shall fail if:
... 
|     [ENOENT]
|         A component of file_name does not name an existing file or file_name
|        points to an empty string.

> other realpath implementations like readlink -f and FreeBSD realpath will just echo the path.

It seems readlink -f in coreutils 5.2.1 doesn't behaves as
so.

debian-sid% readlink -f /asdfasdf
zsh: exit 1     readlink -f /asdfasdf
debian-sid% readlink --version
readlink (coreutils) 5.2.1
Written by Dmitry V. Levin.

Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% 

On FreeBSD, realpath /asdfasdf behaves as you said.
However realpath /xxx/yyy causes an error.
So some non-existant paths are not echoed.

freebsd54% realpath /xxx/yyy
realpath: /xxx: No such file or directory
zsh: exit 1     realpath /xxx/yyy
-- 
Tanaka Akira