如何找到符號連結執行的命令?
在我的系統中的某個地方(問題是我不知道在哪裡)我有一個符號連結,它被優先考慮,
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
。