首先,我知道~/
是主目录。对~
或~/
执行CDing命令会将我带到主目录。
然而,cd ~X
把我带到了一个特殊的地方,在那里X
似乎是任何东西。
在bash中,如果我点击"cd ~
“并点击tab,它会显示一堆可能的~X
选项,比如~mail
、~postgres
和~ssh
。转到这些文件夹并执行pwd
,我发现这些文件夹不在主目录中;它们到处都是。
它们不是别名。我查过了。它们不是env.
变量,否则它们需要一个$
。
设置这些链接的内容是什么?在哪里可以找到设置这些链接的位置?
发布于 2009-11-02 16:41:15
这是一个叫做"tilde expansion“的Bash特性。这是外壳的功能,而不是操作系统的功能。例如,使用csh,您将获得不同的行为。
回答您关于信息从何而来的问题:您的主目录来自变量$HOME
(不管您在那里存储了什么),而其他用户的主目录是使用getpwent()
实时检索的。该函数通常由NSS控制;因此,默认情况下会从/etc/passwd
中提取值,尽管可以将其配置为使用任何所需的源检索信息,比如NIS或SQL数据库。
Tilde扩展不仅仅是主目录查找。以下是摘要:
~ $HOME
~fred (freds home dir)
~+ $PWD (your current working directory)
~- $OLDPWD (your previous directory)
~1 `dirs +1`
~2 `dirs +2`
~-1 `dirs -1`
dirs
和~1
、~-1
等与pushd
和popd
一起使用。
发布于 2009-06-15 22:01:17
这些是用户的主目录。例如,尝试使用cd ~(your username)
。
发布于 2009-06-15 22:00:24
它们是/etc/passwd
中用户的主目录吗?像postgres、sendmail、apache等服务创建的系统用户拥有和普通用户一样的主目录。
https://stackoverflow.com/questions/998626
复制相似问题