Directory

創建相對於目前目錄的符號連結

  • May 2, 2018

我正在嘗試在我的主目錄中創建一個符號連結,該連結指向我的外部硬碟上的一個目錄。

當我這樣指定它時它工作正常:

cd ~
ln -s /run/media/name/exhdd/Data/ Data

但是,當我嘗試這樣做時,它會創建一個錯誤的連結:

cd /run/media/name/exhdd
ln -s Data/ ~/Data

這會創建一個我無法cd進入的連結。

當我嘗試時,bash 抱怨:

bash: cd: Data: Too many levels of symbolic links

ls設置為顯示彩色輸出時,我家中的數據符號連結也顯示為紅色。

為什麼會這樣?如何以這種方式創建連結?(我想在我的工作目錄中的另一個目錄中創建一個目錄的符號連結。)


**編輯:**根據這個StackOverflow 答案,如果第二個參數(在我的情況下是 ~/Data)已經存在並且是一個目錄,ln將創建一個指向該目錄目標的符號連結。

但是,我遇到了同樣的問題:

ln -s Data/ ~/

這是正在發生的事情。如果您使用相對路徑創建符號連結,則符號連結將是相對的。符號連結只儲存您給它們的路徑。他們從不將路徑解析為完整路徑。跑步

$ pwd
/usr/bin
$ ln -s ls /usr/bin/ls2

相對於符號連結所在的目錄 ( )創建一個名為ls2to (viz. ) 的符號連結。上面的命令將從任何目錄創建一個功能符號連結。/usr/bin``ls``/usr/bin/ls``/usr/bin

$ pwd
/home/me
$ ln -s ls /usr/bin/ls2

如果您將符號連結移動到不同的目錄,它將不再指向/usr/bin/ls.

您正在創建一個指向Data並命名它的符號連結Data。它指向自己。您必須使用目錄的絕對路徑創建符號連結。

ln -s "$(realpath Data)" ~/Data

引用自:https://unix.stackexchange.com/questions/84175