什么是“~/”目录?

Sam*_*iao 6 linux bash

也许与编程无关,但我想在 c 程序中引用这个目录。

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

它也不是 $USER 的家,因为我可以使用 USER="another" 成为 root,但是“~/”仍然指向“/root”。

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

小智 15

使用来自/etc/passwd(第 6 个字段)的主目录信息。

  • 不,不要这样做。使用(在 shell 中)getent passwd,或在 C 中使用 getpwent(3)。两者都将在 NIS 或 LDAP 系统上成功,而 /etc/passwd 会使您失败。 (4认同)

kma*_*rsh 2

也许与编程无关,但我想在c程序中引用这个目录。

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