如何正确显示环境变量的内容(这里:当前用户的主目录)?

如何正确显示环境变量的内容(这里:当前用户的主目录)?

如果我输入

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 项(以 : 作为字段分隔符)

相关内容