coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RFC: Change pwd to assume -L by default


From: Bob Proulx
Subject: Re: RFC: Change pwd to assume -L by default
Date: Tue, 1 Jul 2014 13:02:08 -0600
User-agent: Mutt/1.5.23 (2014-03-12)

Jim Meyering wrote:
> Pádraig Brady wrote:
> > POSIX says that `pwd` without options should assume -L is specified.

Hmm...  It does?  If so I think that is a bad thing in the standard
since it does not standardize existing behavior but requires an
incompatible change to it.  Existing behavior of /bin/pwd has always
been to print the canonical path.

> > pwd is most often invoked as a shell builtin and bash, dash, zsh, ksh
> > all follow POSIX and assume that -L is the default.

> > However coreutils pwd assumes -P is the default, according to this
> > comment in the source:
> >
> >   "POSIX requires a default of -L, but most scripts expect -P."

I still think that is true.  I think most usage of /bin/pwd expects it
to be -P not -L.  This is separate from the usage of the shell builtin.

> When I wrote the original pwd.c, the standard was
> POSIX 1003.2-1992, and someone had actually sent
> me hard copy for Volumes 1 and 2. I've just checked (still have them)
> and see it says simply to print "an absolute pathname of the current
> working directory", so I made it call xgetcwd and print that.
> 
> I think it's fine to make -L the default, now.  As you say, it will make
> our version conform to the newer standard and eliminate a small
> source of incompatibility between the modern built-ins and exec'd
> versions of this command. Any time we make such a change, there
> is a risk of causing a script to malfunction, but I think very few scripts
> exec pwd, and fewer still would malfunction with this change.

I disagree.  I think most people expect that /bin/pwd produces the
canonical path.  I think changing it to print $PWD as the shell
builtin does is a bad idea since it will go against long standing
usage.  I think if users were polled it would show that most people
have the built in pwd defaulting to -L and therefore explicitly
execute /bin/pwd in order to escape that logical illusion and to
return the canonical path.

I think this very small thing is actually a huge change in legacy
behavior.  Please don't do it.

Bob



reply via email to

[Prev in Thread] Current Thread [Next in Thread]