| 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 tilde expansion in word that looks like assignment but isn't |
| 19 | # bash and mksh mistakenly expand here! |
| 20 | # bash fixes this in POSIX mode (gah). |
| 21 | # http://lists.gnu.org/archive/html/bug-bash/2016-06/msg00001.html |
| 22 | HOME=/home/bob |
| 23 | echo x=~ |
| 24 | ## stdout: x=~ |
| 25 | ## BUG bash/mksh stdout: x=/home/bob |
| 26 | |
| 27 | #### tilde expansion of word after redirect |
| 28 | HOME=$TMP |
| 29 | echo hi > ~/tilde1.txt |
| 30 | cat $HOME/tilde1.txt | wc -c |
| 31 | ## stdout: 3 |
| 32 | ## status: 0 |
| 33 | |
| 34 | #### other user |
| 35 | echo ~nonexistent |
| 36 | ## stdout: ~nonexistent |