我安装了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
验证路径(因为它是虚拟的,所以还不存在),但我无法解释为什么引用会导致这种情况。
我正在使用bash
4.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