2012-10-06 15:17:31 +0000 2012-10-06 15:17:31 +0000
86
86

通过用户名获取主目录

我想用echo

echo ~puchuu
>> /home/puchuu

获取任何用户的主目录,但我不能使用变量

echo ~$USER
>> ~puchuu
echo `echo ~$USER`
>> ~puchuu
```。

答案 (5)

90
90
90
2012-10-06 15:21:58 +0000

你可以使用eval

eval echo ~$USER

但请看下面 Andrew 的评论和 glenn 的回复。

68
68
68
2012-10-06 18:50:27 +0000

这可能对你有用。

homedir=$( getent passwd "$USER" | cut -d: -f6 )

这对不是你的用户也有效. 例如,

homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
14
14
14
2014-12-18 16:08:59 +0000

看来你就是那个用户–为什么不是

echo $HOME

1
1
1
2016-07-12 18:00:01 +0000

我不知道这是否有帮助,但是在表达式外面加上斜杠在ZSH上可以用,但是在Bash上就不行了:

echo ~`echo $USER`
```。
0
0
0
2016-08-15 10:32:47 +0000

登录后,运行cd进入主目录,再运行pwd打印工作目录。