web-dev-qa-db-ja.com

OS Xでシンボリックリンクを変更する方法

ln -s "/path/to/point/to" "/path/where/symlink/is"を使用して)新しいシンボリックリンクを削除して作成せずに、シンボリックリンクが指す場所を変更するにはどうすればよいですか?

私がJavaの「現在の」シンボリックリンクにそれをやろうとしたとき、Javaは(少なくともコマンドラインからは、「セグメンテーションフォールト」と言って)機能しませんでしたが、私が正常に戻ったときTime Machineを使用して古い「現在の」シンボリックリンクを復元しました(ただし、後で現在のJavaバージョン)を変更するには/Applications/Utilities/Java Preferences.appを使用する必要があることがわかりました。).

21
mk12
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バージョンが変更されていることを確認してください。

8
mark4o
ln -hfs newlocation existinglink

または

ln -nfs newlocation existinglink

newlocationを指すように既存のリンクを変更します

(-nと-hの動作は同じです)

「man ln」から

-h target_fileまたはtarget_dirがシンボリックリンクである場合、それに従わないでください。これは、ディレクトリを指す可能性のあるシンボリックリンクを置き換えるために-fオプションを使用する場合に最も便利です。

-f対象のファイルがすでに存在する場合は、リンクを解除してリンクが発生するようにします。 (-fオプションは、以前の-iオプションをオーバーライドします。)

-s Creaeシンボリックリンク

30
Maxxx

試してください:

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

Lnコマンドではリンクを変更できません。新しいリンクを作成するだけです。

1
mk12

リンクを変更する前と後で、リンクとターゲットの権限を比較しましたか?それを機能させるには、適切なchownコマンドとchmodコマンドをフォローアップする必要があるだけかもしれません。

0
Josh