3

У меня есть папка "abc". Я создаю символическую ссылку: ln -s abc abclink . но затем, когда я набираю, cd abclink говорит: "Нет такого файла или каталога".

Я вижу ссылку, она имеет разрешения "lrwxr-xr-x", почему она не работает? Как заставить это работать?

2 ответа2

5

Обычно, когда вы сталкиваетесь с этим, ваша цель недействительна. то есть abc не существует. Да, вы можете создавать символические ссылки на вещи, которые не существуют.

1

У меня был дополнительный запутанный вариант использования, который в конечном итоге совпадает с принятым ответом - каталог назначения не существует - но с дополнительным поворотом.

Я создавал символическую ссылку на каталог, определенный в переменной среды, которую мы будем называть 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 в моем домашнем каталоге.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .