[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Tilde expansion in assignment-like context

From: Chet Ramey
Subject: Re: Tilde expansion in assignment-like context
Date: Mon, 6 Aug 2018 15:45:50 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

On 8/6/18 3:09 PM, Clint Hepner wrote:

> Bash Version: 4.4
> Patch Level: 19
> Release Status: release
> Description:
>         A non-initial unquoted tilde is expanded outside of an assignment. 
> This
>         was raised as a question on Stack Overflow, 
> https://stackoverflow.com/q/51713759/1126841.
> Repeat-By:
>         $ set +k
>         $ echo home_dir=~
>         home_dir=/Users/chepner

Yes. Bash has done this since its earliest days. A word that looks like an
assignment statement has tilde expansion performed after unquoted =~ and :~
no matter where it appears on the command line. This makes things like

        make DESTDIR=~stager/bash-install
        export PATH=/usr/local/bin:~/bin:/usr/bin

easy and convenient.

The first version I can find that implemented the =~ and :~ tilde expansion
prefixes is bash-1.10 (1991). Those early versions would have expanded
something like `--home_dir=~'. The first version that restricted it to
words that satisfied the assignment statement restrictions is bash-2.0

Bash doesn't do this when it's in posix mode. The first version that
implemented that was bash-1.14.0.

``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    address@hidden    http://tiswww.cwru.edu/~chet/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]