13

Как изменить местоположение ссылки на символическую ссылку, не удаляя и не создавая новую (с помощью ln -s "/path/to/point/to" "/path/where/symlink/is")?

Когда я попытался сделать это с символьной ссылкой "Current" в Java, Java даже не работал (по крайней мере, из командной строки, сказал "Ошибка сегментации"), но все восстановилось, когда я восстановил старую символическую ссылку "Current" со временем Машина (но позже я узнал, что я должен использовать /Applications/Utilities/Java Preferences.app для изменения текущей версии Java).

5 ответов5

18
ln -hfs newlocation existinglink

или же

ln -nfs newlocation existinglink

изменит существующую ссылку, чтобы указать на новое местоположение

(-n и -h идентичны в действии)

Из "человека"

-h Если target_file или target_dir является символической ссылкой, не переходите по ней. Это наиболее полезно с опцией -f, чтобы заменить символическую ссылку, которая может указывать на каталог.

-f Если целевой файл уже существует, отсоедините его, чтобы ссылка могла появиться. (Параметр -f отменяет все предыдущие параметры -i.)

Crea символическая ссылка

10

Пытаться:

unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link
6
mkdir /path/where/newsymlink
ln -s /path/to/point/to /path/where/newsymlink/is
mv /path/where/newsymlink/is /path/where/symlink/
rmdir /path/where/newsymlink

Однако утилита Java Preferences изменяет не только символическую ссылку; Вы должны использовать это, чтобы гарантировать, что версия Java изменена.

1

Команда ln не позволяет вам менять ссылки, а только создавать новые.

0

Вы сравнивали разрешения для ссылок и целей до и после изменения ссылки? Возможно, вам просто нужно выполнить соответствующие команды chown и chmod, чтобы все заработало.

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