首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Linux bash中代字号的含义(非主目录)

Linux bash中代字号的含义(非主目录)
EN

Stack Overflow用户
提问于 2009-06-16 05:58:47
回答 6查看 156.5K关注 0票数 112

首先,我知道~/是主目录。对~~/执行CDing命令会将我带到主目录。

然而,cd ~X把我带到了一个特殊的地方,在那里X似乎是任何东西。

在bash中,如果我点击"cd ~“并点击tab,它会显示一堆可能的~X选项,比如~mail~postgres~ssh。转到这些文件夹并执行pwd,我发现这些文件夹不在主目录中;它们到处都是。

它们不是别名。我查过了。它们不是env.变量,否则它们需要一个$

设置这些链接的内容是什么?在哪里可以找到设置这些链接的位置?

EN

回答 6

Stack Overflow用户

发布于 2009-11-02 16:41:15

这是一个叫做"tilde expansion“的Bash特性。这是外壳的功能,而不是操作系统的功能。例如,使用csh,您将获得不同的行为。

回答您关于信息从何而来的问题:您的主目录来自变量$HOME (不管您在那里存储了什么),而其他用户的主目录是使用getpwent()实时检索的。该函数通常由NSS控制;因此,默认情况下会从/etc/passwd中提取值,尽管可以将其配置为使用任何所需的源检索信息,比如NIS或SQL数据库。

Tilde扩展不仅仅是主目录查找。以下是摘要:

代码语言:javascript
复制
~              $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等与pushdpopd一起使用。

票数 79
EN

Stack Overflow用户

发布于 2009-06-15 22:01:17

这些是用户的主目录。例如,尝试使用cd ~(your username)

票数 36
EN

Stack Overflow用户

发布于 2009-06-15 22:00:24

它们是/etc/passwd中用户的主目录吗?像postgres、sendmail、apache等服务创建的系统用户拥有和普通用户一样的主目录。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/998626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档