Isso depende muito do shell e da ordem em que as expansões são feitas nessas camadas.
~$user
expande para o diretório inicial do usuário cujo nome está armazenado em $user
in csh (de onde vem esse recurso ~user
), AT & T ksh, zsh, fish.
Note, no entanto, estas variações:
$ u=daemon/xxx csh -c 'echo ~$u'
/usr/sbin/xxx # same in zsh/fish
$ u=daemon/xxx ksh93 -c 'echo ~$u'
~daemon/xxx
$ u=daemon/xxx csh -c 'echo ~"$u"'
Unknown user: daemon/xxx.
$ u=daemon/xxx zsh -c 'echo ~"$u"'
/usr/sbin/x # same in fish
$ u=" daemon" csh -c 'echo ~$u'
/home/stephane daemon
$ u=" daemon" zsh -c 'echo ~$u'
~ daemon # same in ksh/fish
$ u="/daemon" csh -c 'echo ~$u'
/home/stephane/daemon # same in zsh
$ u="/daemon" fish -c 'echo ~$u'
~/daemon # same in ksh
Ele se expande para o diretório inicial do usuário chamado literalmente $user
in bash
(desde que o usuário exista, o que é muito improvável, é claro).
E nem em pdksh
, dash
, yash
, presumivelmente porque eles não consideram $user
um nome de usuário válido.