Warum kann ich nicht mit Anführungszeichen zu einem virtuellen AVFS-Verzeichnis wechseln?

Warum kann ich nicht mit Anführungszeichen zu einem virtuellen AVFS-Verzeichnis wechseln?

ich installierteavfsum Archivdateien transparent als Verzeichnisse mounten zu können. Ich habe einen Mount-Punkt erstellt mit:

mkdir ~/.avfs
avfsd ~/.avfs

Von dort aus kann ich Dinge tun wie cd ~/.avfs/some/path/foo.tar.gz#/: „OK“.

Mir ist jedoch aufgefallen, dass das Einfügen des Pfads in doppelte Anführungszeichen cdfehlschlägt:

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

Warum sollten Anführungszeichen wichtig sein? Ich würde nicht erwarten, dass die Anführungszeichen für irgendjemanden außer der Shell sichtbar sind, aber das scheint nur bei Pfaden zu passieren, die enthalten ~/.avfs. Die einzige Erklärung, die mir einfällt, ist, dass bashder Pfad validiert wird (der, da er virtuell ist, noch nicht existiert), aber ich kann nicht erklären, warum Anführungszeichen das verursachen würden.

Ich verwende bashdie Version 4.3.48(1). avfsdBerichte für Versionsinformationen:

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

Antwort1

Was passiert, ist, dass wenn Sie den Pfad in Anführungszeichen setzen, das ~ von Ihrer Bash nicht erweitert wird – normalerweise haben Programme keine Ahnung, dass ~ für Ihr Home-Verzeichnis steht!

Sie können dies überprüfen, indem Sie die folgenden beiden Befehle in Bash ausprobieren:

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

verwandte Informationen