| 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | #### ~ expansion in assignment |
| 4 | HOME=/home/bob |
| 5 | a=~/src |
| 6 | echo $a |
| 7 | ## stdout: /home/bob/src |
| 8 | |
| 9 | #### ~ expansion in readonly assignment |
| 10 | # dash fails here! |
| 11 | # http://stackoverflow.com/questions/8441473/tilde-expansion-doesnt-work-when-i-logged-into-gui |
| 12 | HOME=/home/bob |
| 13 | readonly const=~/src |
| 14 | echo $const |
| 15 | ## stdout: /home/bob/src |
| 16 | ## BUG dash stdout: ~/src |
| 17 | |
| 18 | #### No ~ expansion in dynamic assignment |
| 19 | HOME=/home/bob |
| 20 | binding='const=~/src' |
| 21 | readonly "$binding" |
| 22 | echo $const |
| 23 | ## stdout: ~/src |
| 24 | |
| 25 | #### No tilde expansion in word that looks like assignment but isn't |
| 26 | # bash and mksh mistakenly expand here! |
| 27 | # bash fixes this in POSIX mode (gah). |
| 28 | # http://lists.gnu.org/archive/html/bug-bash/2016-06/msg00001.html |
| 29 | HOME=/home/bob |
| 30 | echo x=~ |
| 31 | ## stdout: x=~ |
| 32 | ## BUG bash/mksh stdout: x=/home/bob |
| 33 | |
| 34 | #### tilde expansion of word after redirect |
| 35 | HOME=$TMP |
| 36 | echo hi > ~/tilde1.txt |
| 37 | cat $HOME/tilde1.txt | wc -c |
| 38 | ## stdout: 3 |
| 39 | ## status: 0 |
| 40 | |
| 41 | #### other user |
| 42 | echo ~nonexistent |
| 43 | ## stdout: ~nonexistent |