引用符付きの仮想 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

なぜ引用符が重要なのでしょうか? 引用符がシェル以外に表示されるとは思いませんが、これは を含むパスでのみ発生するようです~/.avfs。考えられる唯一の説明は、 がbashパス (仮想パスなのでまだ存在していません) を検証しているということなのですが、引用符によってなぜこのようなことが起こるのかは説明できません。

私はbash4.3.48(1)リリースを使用しています。avfsdバージョン情報についてはレポートをご覧ください:

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

答え1

何が起こっているかというと、パスを二重引用符で囲むと、~ は bash によって展開されません。通常、プログラムには ~ がホーム ディレクトリを表すという概念がないのです。

これを検証するには、bash で次の 2 つのコマンドを実行します。

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

関連情報