Я хотел / usr / bin / local
для символической ссылки на /home/jonas/swift-5.3.3-RELEASE-ubuntu20.04/usr/bin/swift
, поэтому я ввел следующую команду :
sudo ln -s swift-5.3.3-RELEASE-ubuntu20.04 / usr / bin / swift / usr / bin / local
К сожалению, теперь / usr / bin / local
символическая ссылка на swift, и ее содержимое исчезло, как показано здесь:
lrwxrwxrwx 1 root root 45 Mär 29 13:24 / usr / bin / local -> swift-5.3.3-RELEASE-ubuntu20.04 / usr / bin / swift
Есть ли способ вылечить это?
ln
не будет создавать символическую ссылку с тем же именем, что и существующий каталог. В этом случае синтаксис будет оценен как
ln [OPTION]... TARGET... DIRECTORY
Это означает: если / usr / bin / local
- существующий каталог, ссылка будет названа как цель (цель - swift-5.3.3 -RELEASE-ubuntu20.04 / usr / bin / swift
с именем swift
) будет создан в существующем каталоге.
Конечно, ваш / usr / bin / local
не может быть заменен символической ссылкой с таким же именем, если она существует.
Таким образом, исходя из вашего отчета, мы можем с уверенностью предположить, что в вашей системе не было предыдущей папки / usr / bin / local
. Обычно такой папки нет в стандартной системе Linux. Соответственно, ваша команда создала символическую ссылку / usr / bin / local
в / user / bin
, как вы сами видели.
Если вы пытаетесь создать символическую ссылку на некоторую локальную версию Swift и поместить эту ссылку в / usr / local / bin
, решение будет следующим:
ln -s swift-5.3.3-RELEASE-ubuntu20.04/usr/bin/swift /usr/local/bin/swift