Por que não consigo mudar para um diretório virtual avfs com aspas?

Por que não consigo mudar para um diretório virtual avfs com aspas?

Eu instaleiavfspara poder montar arquivos compactados de forma transparente como diretórios. Criei um ponto de montagem com:

mkdir ~/.avfs
avfsd ~/.avfs

A partir daí, posso fazer coisas cd ~/.avfs/some/path/foo.tar.gz#/perfeitamente.

No entanto, notei que se eu colocar o caminho entre aspas duplas, cdfalha:

~ $ 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

Por que as citações seriam importantes? Eu não esperaria que as aspas fossem visíveis para nada além do shell, mas isso parece acontecer apenas com caminhos que envolvem ~/.avfs. A única explicação que consigo pensar é na bashvalidação do caminho (que, por ser virtual, ainda não existe), mas não consigo explicar por que a citação causaria isso.

Estou usando basha versão 4.3.48(1). avfsdrelatórios para informações de versão:

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

Responder1

O que está acontecendo é que quando você coloca o caminho entre aspas duplas, o ~ não é expandido pelo seu bash - normalmente os programas não têm noção de que ~ representa o seu diretório inicial!

Você pode validar isso tentando os dois comandos a seguir no bash:

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

informação relacionada