Bash
為什麼我不能切換到帶引號的虛擬 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
是驗證路徑(因為它是虛擬的,所以還不存在),但我無法解釋為什麼引用會導致這種情況。我正在使用
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
發生的事情是,當您將路徑用雙引號引起來時, ~ 不會被您的 bash 擴展 - 通常程序不知道 ~ 代表您的主目錄!
您可以通過在 bash 中嘗試以下兩個命令來驗證這一點:
# echo ~/test /home/rabban/test # echo "~/test" ~/test