(ln -s "/path/to/point/to" "/path/where/symlink/is"
を使用して)新しいシンボリックリンクを削除して作成せずに、シンボリックリンクが指す場所を変更するにはどうすればよいですか?
私がJavaの「現在の」シンボリックリンクにそれをやろうとしたとき、Javaは(少なくともコマンドラインからは、「セグメンテーションフォールト」と言って)機能しませんでしたが、私が正常に戻ったときTime Machineを使用して古い「現在の」シンボリックリンクを復元しました(ただし、後で現在のJavaバージョン)を変更するには/Applications/Utilities/Java Preferences.app
を使用する必要があることがわかりました。).
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バージョンが変更されていることを確認してください。
ln -hfs newlocation existinglink
または
ln -nfs newlocation existinglink
newlocationを指すように既存のリンクを変更します
(-nと-hの動作は同じです)
「man ln」から
-h target_fileまたはtarget_dirがシンボリックリンクである場合、それに従わないでください。これは、ディレクトリを指す可能性のあるシンボリックリンクを置き換えるために-fオプションを使用する場合に最も便利です。
-f対象のファイルがすでに存在する場合は、リンクを解除してリンクが発生するようにします。 (-fオプションは、以前の-iオプションをオーバーライドします。)
-s Creaeシンボリックリンク
試してください:
unlink /path/to/current/link
ln -s /path/to/target /path/to/symbolic/link
Lnコマンドではリンクを変更できません。新しいリンクを作成するだけです。
リンクを変更する前と後で、リンクとターゲットの権限を比較しましたか?それを機能させるには、適切なchownコマンドとchmodコマンドをフォローアップする必要があるだけかもしれません。