AFAIK, tidak, Anda tidak bisa. Anda harus menghapusnya dan membuatnya kembali. Sebenarnya, Anda dapat menimpa sebuah symlink dan dengan demikian memperbarui nama jalur yang dirujuk olehnya:
$ ln -s .bashrc test
$ ls -al test
lrwxrwxrwx 1 pascal pascal 7 2009-09-23 17:12 test -> .bashrc
$ ln -s .profile test
ln: creating symbolic link `test': File exists
$ ln -s -f .profile test
$ ls -al test
lrwxrwxrwx 1 pascal pascal 8 2009-09-23 17:12 test -> .profile
EDIT : Seperti yang ditunjukkan OP dalam komentar, menggunakan --forceopsi ini akan membuat lnpanggilan sistem ke unlink()sebelumnya symlink(). Di bawah ini, output stracedi kotak linux saya membuktikannya:
$ strace -o /tmp/output.txt ln -s -f .bash_aliases test
$ grep -C3 ^unlink /tmp/output.txt
lstat64("test", {st_mode=S_IFLNK|0777, st_size=7, ...}) = 0
stat64(".bash_aliases", {st_mode=S_IFREG|0644, st_size=2043, ...}) = 0
symlink(".bash_aliases", "test") = -1 EEXIST (File exists)
unlink("test") = 0
symlink(".bash_aliases", "test") = 0
close(0) = 0
close(1) = 0
Jadi saya kira jawaban akhirnya adalah "tidak".
EDIT : Berikut ini disalin dari jawaban Arto Bendiken di unix.stackexchange.com, sekitar tahun 2016.
Ini dapat memang dilakukan atom dengan rename(2), dengan terlebih dahulu menciptakan symlink baru di bawah nama sementara dan kemudian bersih Timpa symlink lama dalam satu pergi. Seperti yang dinyatakan halaman manual :
Jika jalur baru mengacu pada tautan simbolis, tautan tersebut akan ditimpa.
Di shell, Anda akan melakukan ini dengan mv -Tsebagai berikut:
$ mkdir a b
$ ln -s a z
$ ln -s b z.new
$ mv -T z.new z
Anda dapat melakukan straceperintah terakhir itu untuk memastikannya memang menggunakan di rename(2)bawah tenda:
$ strace mv -T z.new z
lstat64("z.new", {st_mode=S_IFLNK|0777, st_size=1, ...}) = 0
lstat64("z", {st_mode=S_IFLNK|0777, st_size=1, ...}) = 0
rename("z.new", "z") = 0
Perhatikan bahwa di atas, keduanya mv -Tdan stracekhusus untuk Linux.
Di FreeBSD, gunakan secara mv -hbergantian.
Catatan editor: Beginilah cara Capistrano melakukannya selama bertahun-tahun sekarang, sejak ~ 2.15. Lihat permintaan tarik ini .
lnperintah (atau API yang setara) menimpa tautan lama? Masalah apa yang Anda hadapi?