如何在 OS X 中更改符号链接?

如何在 OS X 中更改符号链接?

如何更改符号链接指向的位置,而不删除并创建新的符号链接(使用ln -s "/path/to/point/to" "/path/where/symlink/is")?

当我尝试对 Java 的“当前”符号链接执行此操作时,Java 甚至无法工作(至少从命令行,显示“段错误”),但是当我使用 Time Machine 恢复旧的“当前”符号链接时,它恢复正常(但后来我发现我应该使用它/Applications/Utilities/Java Preferences.app来更改当前的 Java 版本)。

答案1

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 首选项实用程序更改的不仅仅是符号链接;您应该使用它来确保 Java 版本已更改。

答案2

ln -hfs newlocation existinglink

或者

ln -nfs newlocation existinglink

将更改现有链接以指向newlocation

-n-h操作相同)

man ln

-h 如果target_file或是target_dir一个符号链接,则不要遵循它。这对于-f替换可能指向目录的符号链接的选项非常有用。

-f 如果目标文件已经存在,则取消链接以便可以进行链接。(该-f选项将覆盖任何先前的-i选项。)

-s 创建符号链接

答案3

尝试:

unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link

答案4

您是否比较过更改链接前后链接和目标上的权限?您可能只需要跟进适当的 chown 和 chmod 命令即可使其正常工作。

相关内容