為什麼我無法切換到引號的虛擬 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

相關內容