답변:
eval echo "~$USER"
것으로 가정 하는 경우에도 유의하십시오 $USER
. 예를 들어, 경우에 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
괜찮습니다. 그러나 변수 인 경우에는 eval이 필요합니다