为什么我无法切换到带引号的虚拟 avfs 目录?

为什么我无法切换到带引号的虚拟 avfs 目录?

我安装了AVFS能够将存档文件透明地挂载为目录。我创建了一个挂载点:

mkdir ~/.avfs
avfsd ~/.avfs

从那里,我可以做一些事情,比如cd ~/.avfs/some/path/foo.tar.gz#/很好。

但是,我注意到,如果我将路径用双引号引起来,cd则会失败:

~ $ cd ~/.avfs/usr/local/bin/
~/.avfs/usr/local/bin $ cd "~/.avfs/usr/local/bin/"
bash: cd: ~/.avfs/usr/local/bin/: No such file or directory

为什么引号很重要?我不希望除了 shell 之外的任何东西都可以看到引号,但这似乎只发生在涉及~/.avfs.我能想到的唯一解释是bash验证路径(因为它是虚拟的,所以还不存在),但我无法解释为什么引用会导致这种情况。

我正在使用bash4.3.48(1)-release。avfsd版本信息报告:

FUSE library version: 2.9.4
fusermount version: 2.9.4
using FUSE kernel interface version 7.19

答案1

发生的情况是,当您将路径用双引号引起来时, ~ 不会被 bash 扩展 - 通常程序不知道 ~ 代表您的主目录!

您可以通过在 bash 中尝试以下两个命令来验证这一点:

# echo ~/test
/home/rabban/test
# echo "~/test"
~/test

相关内容