따옴표가 있는 가상 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에서 다음 두 명령을 시도하여 이를 확인할 수 있습니다.

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

관련 정보