Почему я не могу переключиться на виртуальный каталог 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проверка пути (который, поскольку он виртуальный, пока не существует), но я не могу объяснить, почему кавычки могут вызвать это.

Я использую bashверсию 4.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:

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

Связанный контент