Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: bug (feature?) in zsh



On Jan 17, 10:59am, William H. Magill wrote:
} Subject: Re: bug (feature?) in zsh
}
} On 16 Jan, 2005, at 01:33, Bart Schaefer wrote:
} 
} > The completion system (including compctl) uses the command hash table 
} 
} The use of a hash table for command execution/completion was 
} implemented with csh -- many, many years ago. Those shells which have 
} descended from csh (tcsh, zsh) behave in this same fashion. It is the 
} expected behavior.

This would almost be correct, except that zsh can't really be said to
have "descended" from csh.  It was written entirely independently and
was always meant to be more like ksh than csh; Paul Falstad borrowed
some csh features that he liked, is all.

Furthermore, it's possible to turn off zsh's use of the hash table if
all you're doing is command execution -- but completion forces the hash
table to be filled and uses it exclusively.
 
} This difference was mainly because the "csh" was intended as an 
} "interactive" shell, and therefore included features (like command 
} completion) which made usage on what at the time were the standard 
} input devices -- 110 baud ttys -- much easier on the operator.

Several years passed after csh's first deployment before completion
was added.

} In the beginning there was only Bell Labs and it was called "sh."
} [...]  Meanwhile BSD created csh to run on top of sh.

"Run on top of"??  Csh is and always has been written directly in C,
not as some kind of front on sh.

} All Unix variants and Linux variants boot into some form of "sh."
} Today, I believe all variants of Unix and Linux run "new sh" for
} process 0, which in turn spawns init.

This is news to me, and to the authors of "hp-ux 11i internals" as well
(which I happen to have sitting here because the publisher sent me an
unsolicited copy hoping I'd review it on Amazon).  The boot loader loads
the kernel, and the kernel spawns init directly, not by going through
sh. (This doesn't mean the kernel doesn't also spawn shells.)

} That this is not in the FAQ is not really surprising. Interesting, but 
} not surprising.

What I meant "isn't yet in the FAQ" is the difference between completion
and execution with regard to the hash table behavior.



Messages sorted by: Reverse Date, Date, Thread, Author