Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14218
| From | Greg Wooledge <wooledg@eeg.ccf.org> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | Re: Bash don't interpret ~ path with multiple options. |
| Date | 2018-06-04 08:33 -0400 |
| Message-ID | <mailman.1110.1528115628.1292.bug-bash@gnu.org> (permalink) |
| References | <20180603020815.GA4907@supsup-VirtualBox> <50baa1ea-4503-20b6-adc4-9cf7e6395940@case.edu> |
On Sun, Jun 03, 2018 at 02:32:03PM -0400, Chet Ramey wrote: > On 6/2/18 10:08 PM, Jungsub Shin wrote: > > # mount -o remount,append=~/test_aufs/ro1=ro+wh ~/test_aufs/mount > > > > mount failed with ~/test_aufs/ro1 path isn't exist message. > > So i try to debug with strace and i find out bash don't replace ~ > > path to absolute path. > Tilde expansion happens at the beginning of a word or after the `=' > and every `:' on the rhs of an assignment statement. Bash extends this to > words that satisfy the criteria for assignment statements but appear as > arguments to a command (so things like `export DIR=~/foo' work). The > `remount,append=...' word does not satisfy the requirements for an > assignment statement, since the characters before the `=' don't make up > a valid shell identifier, so the tilde doesn't get expanded. When in doubt, use "$HOME" instead of ~ to ensure that the expansion will occur. mount -o remount,append="$HOME"/test_aufs/ro1=ro+wh ~/test_aufs/mount If you had been attempting to use ~user instead of ~ then I would have recommended a temporary variable: dir=~user/testaufs/ro1 mount -o remount,append="$dir"/test_aufs/ro1=ro+wh ~user/test_aufs/mount
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
Re: Bash don't interpret ~ path with multiple options. Greg Wooledge <wooledg@eeg.ccf.org> - 2018-06-04 08:33 -0400
csiph-web