У меня был дополнительный запутанный вариант использования, который в конечном итоге совпадает с принятым ответом - каталог назначения не существует - но с дополнительным поворотом.
Я создавал символическую ссылку на каталог, определенный в переменной среды, которую мы будем называть FOO
:
$ FOO="~/project"
$ ln -s foo "$FOO"
Казалось, это работает нормально:
$ ls -al
lrwxr-xr-x 1 jondoe jondoe 10 Feb 20 02:25 foo -> ~/project
Однако, когда я пытаюсь зайти в папку foo
, я получаю сообщение об ошибке:
$ cd foo
-bash: cd: foo: No such file or directory
Это было странно, потому что мы только что увидели, что foo
определенно существует. Более того, ~/project
:
$ cd ~/project
$ ls -al
drwxr-xr-x 3 jondoe jondoe 102 Feb 20 02:26 .
drwxr-xr-x 4 jondoe jondoe 136 Feb 20 02:25 ..
-rw-r--r-- 1 jondoe jondoe 0 Feb 20 02:26 README.md
Как символическая ссылка и папка, на которую она указывает, существуют, но я не могу использовать символическую ссылку?
Оказывается, причина в том, что в переменной среды FOO
есть тильда ~
.
Так как я создавал эту переменную в кавычках при создании символической ссылки, тильда не проходила через расширение bash, и поэтому полученная символическая ссылка указывала на буквальный путь ~/project
а не на папку project
в моем домашнем каталоге.