Answers:
eval echo "~$USER"
假设$USER
不包含shell可能解释的特殊字符。例如,如果是USER="foo\$bar"
,那么当我们eval
使用shell时,它将替换$bar
为您不需要的输出。基本上,如果您采用这种方法,则需要确保$USER
输入正确。大多数时候可能会,但是您应该记住这一点。
这可能对您有用:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
这也适用于不是您的用户。例如,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
而不是假设passwd
房屋的位置比假设房屋的位置更进一步/home/
看来您就是那个用户-为什么不
echo $HOME
?
我不知道它是否有帮助,但是将波浪号放在表达式的外部对ZSH起作用,但对Bash无效:
echo ~`echo $USER`
echo ~$username
可以了,但在