On 10/09/2007, Glenn Fowler <gsf at research.att.com> wrote:
>
> On Mon, 10 Sep 2007 16:13:12 -0500 Shawn Walker wrote:
> > On 10/09/2007, David Korn <dgk at research.att.com> wrote:
> > > Subject: Re: Re: [ksh93-integration-discuss] TAB not working in the 
> > > middle of a  string
> > > --------
> > > > Why is the = needed? Bash doesn't require a = before : separated
> > > > lists, i.e. using tab or ESC ESC completes /bin:/usr/openbin/b to
> > > > /bin:/usr/openwin/bin without a = in a bash shell
> > >
> > > The = is needed since : is a legal character in a file name.
>
> > You realise, of course, that the next question will be "then why does
> > Bash do that...".
>
> > I've checked this out for myself; bash does not require a ':'.
>
> > Any chance of a "bash compatibility" mode or control over this behaviour?
>
> bash also does this for
>
>         echo foo:b<TAB><TAB>
>
> and will not match valid pathnames containing ':'
>
> why does bash do that?

Apparently, it requires the ':' to be escaped, this works:

mkdir foo:bar

echo foo\:b<TAB><TAB>

I suppose then it is down to the common case. Which is more common, a
colon in a directory or filename or a colon being used as a list
separator?

I defer to whatever relevant standard exists, but it is something to
think about...

-- 
Shawn Walker, Software and Systems Analyst
binarycrusader at gmail.com - http://binarycrusader.blogspot.com/

"Beware of bugs in the above code; I have only proved it correct, not
tried it. " --Donald Knuth

Reply via email to