Casper.Dik at Sun.COM wrote:
> So what exactly does this do:
> 
> if [[ "${cmd}" != ~(Elr)(alias|unalias|command) ]] && ! alias "${cmd}" 
> >/dev/null 2>&1 ; then
>         builtin "${cmd}"
> fi
> 
> 
> Clearly this needs to be fixed.

Ok, since I've read enough of this to know, I'll answer:

that tests whether the command was invoked with the exact name 'alias', 
'unalias', or 'command', or if the command is aliased; if not, it executes the 
'builtin' command on it.  I also see grammatical errors in the comment 
'explaining' what the above line does, which could be fixed to make that some 
clearer.

The fact that ~(Elr), a modifier to the pattern-match, does a homedir expansion 
is apparently the bug here.  That causes the erroneous nameservice lookup.

> Also, it looks at my whole $PATH; it shouldn't do that. 

Not sure why that's happening; probably because of "command" below.  It seems 
to 
me that "command" should have -p there; not sure why it doesn't.

> And since there's 
> a plan to make more executables ksh93 built-in, we need to make sure that
> doesn't happen until we have fixed all bugs in "sleep".

As Roland noted, it gets even more complex, because sleep is now a binary so 
that pgrep sleep works.  making one wonder again at the point of this.

I guess the argument is that the paradigm shifts to "userland is a set of 
programs" to "userland is at least half a shell that does everything simple 
more 
or less on its own".


Reply via email to