[Toybox] Add remaining pwd options

Rob Landley rob at landley.net
Sun Dec 30 15:47:46 PST 2012


On 12/30/2012 05:16:41 AM, Felix Janda wrote:
> On 12/30/12 at 04:43am, Rob Landley wrote:
> POSIX contains many surprises. In the section on environment  
> variables it
> says that $PWD should be set if "pwd -P" was specified. What happens  
> if an
> error happens seems unspecified.

Translation: pwd must be a shell builtin running within the shell's  
process ID, and cannot sanely be implemented any other way.

It would be nice if they would just _identify_ these. I did a pass to  
find them (in the roadmap), but missed this.

> > Sigh. And the whole "PWD defaults to -P unless POSIXLY_CORRECT"  
> thing
> > above: while I'm sure that code is in there, it's not actually what
> > it's doing here. Because GNU code is INSANE, and someone somewhere
> > thought this tangle of corner cases might help somehow.
> >
> > Right, in the case of a deleted directory $PWD is all we've got, so
> > have -L (which is the default) print it but first validate it's an
> > absolute path with no .. in it. Only validate that current directory
> > and path directory point to the same place if there IS a current
> > directory. If that's not what they want, -P exists.
> 
> In the corner case shouldn't pwd (-L and -P) just give an error  
> message?
> ($PWD does not contain an absolute pathname of the current working
> directory.)

If something deletes the directory you're working in, "cd .." should  
work if the directory above you exists. That can't happen if $PWD isn't  
there.

Also, when a directory gets deleted and recreated I do cd "$(pwd)" all  
the time. It's useful to still have pwd if some other process takes out  
the directory you're in.

Rob
 1356911266.0


More information about the Toybox mailing list