如果我输入
echo home
我只会看到输出“home”一词,而不会看到“home/user”
我是这台机器上的唯一用户,并且有密码。
为什么我得到了错误的输出,我必须做哪些更改才能显示我的用户的主目录?
答案1
总结$
Linux 中的变量以.开头。
命令是
echo $HOME
如果你输入
printenv
它将显示所有变量以及它们相等的内容。
或者
printenv | grep '^HOME='
或者您可以尝试其他一些方法:
terrance@terrance-ubuntu:~$ echo ~
/home/terrance
terrance@terrance-ubuntu:~$ printf "%b \n" ~
/home/terrance
terrance@terrance-ubuntu:~$ printf "%b \n" $HOME
/home/terrance
答案2
要打印环境变量,您应该$
在前面使用符号。所以你在
echo home
这只会打印单词 home,因为 shell 不会扩展变量 home,因为它不是以$
符号开头的,并且应该大写。
因此要获得输出您应该运行:
echo $HOME
要列出所有环境变量,您可以使用命令env
。
echo $HOME
您也可以通过运行以下命令获得相同的结果:
env | grep '^HOME'
现在useradd
在某些情况下,当您创建没有主目录的新用户时,如果您使用不带-d
选项或不声明变量HOME_DIR
和的命令,可能会发生这种情况BASE_DIR
。因此,如果您使用该命令创建此用户,useradd
就会出现这种情况。
一些有用的链接:
答案3
除非您明确创建了没有主目录的用户帐户,否则所有用户都应该有一个主目录。在终端中,您可以通过多种方式访问它。cd
是 1,cd ~
是 1。只需查看它的路径,请执行cd; pwd
、 或echo ~
、 或echo $HOME
或
awk -F ':' -v myusername=$(whoami) ' $0~myusername { print $6 }' /etc/passwd
最后一个使用whoami
命令的输出在文件中搜索适当的行/etc/passwd
,并在该行中打印第 6 项(以 : 作为字段分隔符)