~bin 的奇怪 bash 扩展

~bin 的奇怪 bash 扩展

今天我不小心输入了ls ~bin
我想输入的~bak——那是我的垃圾备份文件夹,但~b<tab>欺骗了我。

相反,我得到了这个:

$ ls ~bin
core_perl                             fogcoord                     lftp                           pcmanfm                                 snmpvacm
site_perl                             fold                         lftpget                        

... many miles of output ...

谁能解释一下这里到底发生了什么?cd例如,也适用于。

pwd 中没有这样的文件夹(或符号链接) - 它是真正的 /bin。我也尝试过ls ~etc,但没有成功。

这是我的ls:

$ alias ls
alias ls='ls --color=auto --group-directories-first -h'

答案1

有一个bin用户有 home /bin

$ getent passwd bin
bin:x:1:1:bin:/bin:/bin/false

现在~bin指的是 bin 用户的主目录,它/bin包含所有长长的命令。

同样的方法~etc不行,因为没有etc用户。

相关内容