This is the mail archive of the
mailing list for the Cygwin project.
RE: Bash puzzle: Spaces, environment variables and tab completion
- From: Randall R Schulz <rrschulz at cris dot com>
- To: cygwin at cygwin dot com
- Date: Wed, 04 Dec 2002 07:58:41 -0800
- Subject: RE: Bash puzzle: Spaces, environment variables and tab completion
- References: <email@example.com>
At 23:23 2002-12-03, Gary R. Van Sickle wrote:
Ordinarily, I agree, but on this point, you'd have to re-write the shell's
parser to change how variable expansion occurs (and then provide some sort
of "de-quote" to give the alternate behavior when that's needed).
> You're swimming upstream. Don't do that. Use the system in accordance with
> its design.
Don't listen to him Jim! You pound anything long enough, it'll give!
> Parsing command lines based on white-space separators fundamentally entails
> the need for escaping or quoting when those separator characters are to be
> included in the arguments and not used to separate them.
If you do:
VAR='path with spaces'
it tab-completes to:
path\ with\ spaces\
which is what James wants.
As I said.
Unfortunately, and as I neglected to note in my last post since I didn't
realize it til just now, you can't:
you must still
Ah well, more pounding I guess...
Pound away, you won't get it to work.
But hey! Prove me wrong.
Mountain View, CA USA
> At 22:09 2002-12-03, James Shaw wrote:
> >Hi everyone,
> >I have been using cygwin for several months, and there is something that I
> >haven't been able to figure out how to do: effectively use spaces in bash
> >environment variables.
> >I realize this is basically a bash question and isn't Cygwin specific, but
> >I'm sure more Cygwin users have to deal with spaces in bash than the
> >typical bash user.
> >What I want to do is define an environment
> >variable so I can easily cd or ls. E.g.
> >% PF="/cygdrive/c/Program Files"
> >% cd $PF
> >% ls $PF/Games
> >% ls $PF/G<tab completion!>
> >The above is close, I can
> >% cd "$PF"; ls "$PF"/Games; and even
> >ls "$PF"/G<tab> however, the quotes are clunky.
> >My kludge to avoid the quotes is:
> >% PF2="/cygdrive/c/Program?Files"
> >which allows cd $PF; ls $PF/Games,
> >but stops bash in its tracks on tab completion.
> >Since I would find this very handy, I've spent some time on trying to make
> >this work. I've tried various quoting schemes, but with no luck.
> >So, I ask the list:
> > Can you define $PF so that cd $PF;
> > ls $PF/Games; and ls $PF/G<tab> all work???
> No, No and Yes. Just leave the spaces in the variable and command
> completion will insert the necessary escapes when expanding it. If the
> variable references is already inside a double-quote (even if it's not yet
> closed on the right), then command completion will not insert the
> >I usually like to puzzle these out for myself, but in this case, I'm
> >Thanks for your help,
> Randall Schulz
> Mountain View, CA USA
> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> Bug reporting: http://cygwin.com/bugs.html
> Documentation: http://cygwin.com/docs.html
> FAQ: http://cygwin.com/faq/
Gary R. Van Sickle
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html