ユーザーのホームディレクトリに切り替えることができない理由は疑問です。
$ cd ~"$USER"
または
$ cd ~${USER}
ベストアンサー1
これは、シェルとそのシェル内で拡張が実行される順序によって大きく異なります。
~$user
$user
csh(この機能のソース)、AT&T ksh、zsh、fishに名前が格納されている~user
ユーザーのホームディレクトリに展開されます。
ただし、次の変更に注意してください。
$ 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
$user
文字通り、名前が指定されたユーザーのホームディレクトリに展開されますbash
(ユーザーが存在すると仮定すると、もちろんそうではありません)。
そしてpdksh
、dash
どちらもありませんyash
。おそらく、$user
有効なユーザー名とは見なされないからです。