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
or
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
(1996).
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 [email protected] http://tiswww.cwru.edu/~chet/