Symlink

如何找到符號連結執行的命令?

  • February 9, 2019

在我的系統中的某個地方(問題是我不知道在哪裡)我有一個符號連結,它被優先考慮,bash但連結已損壞,因此它不起作用。

進一步來說:

  • 目前目錄:mysymlink
  • 路徑中的某處(由軟體包安裝):mysymlink

從目前目錄執行時,會呼叫文件系統中某處mysymlink的(損壞的)符號連結。mysymlink

我正在嘗試找到該符號連結,將其刪除,以便我可以使用目前目錄中的符號連結。

我如何找到它?

(編輯)具體範例

命令 -v 測試咖啡館

/usr/local/bin/testcafe

ls -l /usr/local/bin/testcafe

ls: 無法訪問 /usr/local/bin/testcafe: 沒有這樣的文件或目錄

(注意:我錯誤地刪除了自己的目標路徑

如何刪除此符號連結(系統中的某處)?

也許您應該嘗試(假設ls沒有別名;如果其替換為/bin/ls

ls -l $(which mysymlink)

因為which mysymlink給出了命令的完整路徑(即使用變數mysymlink擴展)$PATH

您需要包含mysymlink.

順便說一句,它看起來像.在你的$PATH. 您可以使用echo $PATH. 並且在您的目前目錄中$PATH存在安全風險。

ls:無法訪問/usr/local/bin/testcafe:沒有這樣的文件或目錄

然後檢查其中ls -dl /usr/ /usr/local/ /usr/local/bin/哪些目錄不存在(也許您忘記掛載某些文件系統,或者您錯誤地以 root 身份刪除了其中一些目錄)。

當然也做一個ls -l /usr/local/bin/testcafe

(你應該嘗試/bin/ls而不是ls因為我猜你ls的別名或重新定義)

如何刪除此符號連結(系統中的某處)?

你需要先找到它。適當地使用find(1)(可能與-lname

command -v UTILITY如果您給出命令,它將向您展示 shell 將嘗試執行的內容UTILITY

既然報導了

/usr/local/bin/testcafe

但是之後

ls: cannot access /usr/local/bin/testcafe: No such file or directory

當您嘗試ls -l它時,它使我相信該testcafe實用程序的報告位置已被外殼記憶體,並且已被刪除。

要刷新 shell 的記憶體,請使用hash -r(此命令不輸出任何內容)。這將刷新記憶體,然後 shell 將在您下次執行時進行完整路徑查找testcafe

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