
我安裝了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