[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Completion of ENV variables seems to be broken - leading slash (or e
From: |
Chet Ramey |
Subject: |
Re: Completion of ENV variables seems to be broken - leading slash (or even more) is added |
Date: |
Thu, 31 Mar 2011 21:47:34 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110221 Lightning/1.0b2 Thunderbird/3.1.8 |
On 3/15/11 4:44 PM, Chet Ramey wrote:
>> Bash Version: 4.2
>> Patch Level: 7
>> Release Status: release
>>
>> Description:
>> When enter in console "ls $HOME/" and press TAB for
>> completion, then bash add slash for special characters like $ { }
>> When I back to wersion 4.1_p10 then problem is gone. Problem
>> also exists with 4.2_p6 and 4.2_p1 (these veriosn I have checked).
>
> The difference is that bash-4.1 expanded $HOME and left the expansion
> as part of the replacement text. Bash-4.2 tries to leave what the
> user typed alone, but that leads to an inherently ambiguous situation:
> when do you quote the `$' in a filename (or, in this case, a directory
> name)? It could be a shell variable, and it could be a character in
> the filename.
I've attached a patch that applies a heuristic. If the directory name
contains a variable, and bash expands it, it removes the appropriate
characters from the set that causes readline to ask bash to quote the
filename. It's the 90% solution.
It is not perfect: if a character in the filename needs to be quoted,
bash will still quote the `$' in the directory name. It should handle
most of the cases, however.
If you're interested, apply it with `patch -p0' and see whether or not
it works.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU chet@case.edu http://cnswww.cns.cwru.edu/~chet/
completion-quoting
Description: Text document