回答:
eval echo "~$USER"
て$USER
いないという仮定をしている場合にも注意してください。たとえば、ifの場合USER="foo\$bar"
、eval
シェルは$bar
出力に代入しますが、これは望みのものではありません。基本的に、このルートをとる場合、それが正しい$USER
入力であることを確認する必要があります。ほとんどの場合、おそらくそうなりますが、これを覚えておく必要があります。
これはあなたのために働くかもしれません:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
これは、あなた以外のユーザーでも機能します。例えば、
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
でpasswd
はなく、使用しています/home/
あなたはそのユーザーのようです-なぜ
echo $HOME
?
echo ~$username
大丈夫だけで必要ではありませんが、sh evalでは変数が必要な場合に必要です