什么是“~/”目录?

什么是“~/”目录?

可能与编程无关,但我想在 c 程序中引用该目录。

我以为它是 $HOME,但是当我取消设置 $HOME 时,我仍然可以在 bash 中 cd ~/。

它也不是 $USER 的主目录,因为我可以通过 USER="another" 成为 root,但是“~/”仍然指向“/root”。

那么 bash 如何解释这个“~/”?

答案1

可能与编程无关,但我想在 c 程序中引用该目录。

如果您尝试用 C 语言打开字符串文字“~/”,您会发现它不存在。它是 Bash/Csh 简写符号,由 shell 扩展为主目录。它在文件系统上不存在,因此 C 程序将失败 - 除非它调用 Bash,并允许 Bash 扩展字符串。

答案2

使用来自密码文件 /etc/passwd(第 6 场)。

答案3

是的$HOME,但改变它的值不会影响扩展。请参阅此链接了解更多信息。

答案4

~ 被 shell 解释为 home-dir。它是一个“关键字”

相关内容