Subject: Re: Tab completion in /bin/sh
To: Richard Rauch <rkr@olib.org>
From: Greg A. Woods <woods@weird.com>
List: current-users
Date: 05/05/2005 20:20:13
[ On Thursday, May 5, 2005 at 17:52:23 (-0500), Richard Rauch wrote: ]
> Subject: Re: Tab completion in /bin/sh
>
> But I'm not running them on machines where that size difference
> will matter much. (And what are the actual working set sizes for
> "normal" interactive use?)
I don't have enough plain /bin/sh processes running long enough to tell,
let alone any shell sessions using /bin/sh, especially since now even
root's shell is /bin/ksh on all my systems. :-)
> I don't know how efficient xterm
> is with scrollback memory...
Not very.... :-)
> I use "which" because it's what my fingers know. "type" is what the
> Amiga used as the equivalent of UNIX (to "type out" a file, of course),
> so my fingers just don't want to pick up "type" to do what "which"
> does.
Perhaps you can think of it as: "What _type_ of command is this?"
(and finding the location of a binary executable as more of a
side-effect to telling you that it is a binary executable :-)
> Are you saying that customizing the prompt shouldn't be done?
No, on the contrary -- you'll find that I put useful info in my own
prompt too:
20:11 [2362] $ echo $PS1
${_x[(_m=_mm)==(_h=_hh)]}$_h:$_m [!] $
20:11 [2363] $
> Or that having a program or two run everytime I get a prompt is
> bad? (I don't find my systems brought to their knees in building
> a prompt. (^&)
Well executing commands on every prompt should simply not be necessary
since most useful information either remains static or is too variable
in length to "safely" put in a prompt:
20:12 [2365] $ type setban
setban is a function
20:12 [2366] $ typeset -f setban
function setban {
if [ "$uid" = "$LOGNAME" ]
then
eval TBANNER="\"\${WBANNER:-sh}://\$UUNAME/\$PWD | \$uid[\$LEV]:\$TTYN\""
else
eval TBANNER="\"\${WBANNER:-sh}://\$UUNAME/\$PWD | \$uid(\$LOGNAME)[\$LEV]:\$TTYN\""
fi
print "\033]0;$TBANNER\007\c"
WBANNER=""
}
20:12 [2367] $
(in my interactive sessions "cd" is also an alias for "_cd", which is a
function that, among other things, eventually calls "setban")
In my opinion neither /bin/sh nor /bin/ksh (on NetBSD) are sufficiently
capable at screen management to properly handle long command editing in
the first place (they don't even try to do wrap-around), and they can
only count raw characters in the prompt too -- and thus long prompts
including $PWD, or variable-length prompts, or especially prompts
including escape sequences or tabs, get to be too unwieldy for me.
Worst of all though /bin/ksh pretty much fails completely if the prompt
length ever appropaches the window width.
> I guess if something happened such that trying to exec the code in
> those files would cause the process to freeze forever, then it
> would prevent me from getting a prompt or doing anything else.
That's another very important issue to think about too! ;-)
And then there was that thread the other day about keeping track of
exit codes too....
--
Greg A. Woods
H:+1 416 218-0098 W:+1 416 489-5852 x122 VE3TCP RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com> Secrets of the Weird <woods@weird.com>