找出 $PATH 的定義位置

找出 $PATH 的定義位置

我最近安裝了一個 Arch-Linux 系統。如果我輸入

echo $PATH

/home/user/dir它指向(除其他外)我記得我在某處設置的目錄。我也以 root 使用者身分擁有它,所以它不能~/.bashrc/root/.bashrc.我也向裡面看了看/etc/profile/etc/bash.bashrc但也沒有在那裡找到它。

有沒有辦法找到它的設定位置?

答案1

嘗試在以下位置的所有檔案中搜尋該目錄/etc

sudo grep -r "/home/user/dir" /etc

-r開關使grep搜索/home/user/dir內容/etc及其子目錄中的所有檔案。

grep(1) - Linux 手冊頁:

-d行動,--目錄=行動

如果輸入檔是目錄,則使用 ACTION 處理。預設情況下,ACTION 是,這意味著目錄的讀取就像普通文件一樣。如果行動是跳過,目錄會被默默地跳過。如果行動是遞迴、grep 遞歸讀取每個目錄下的所有檔案;這相當於-r選項。

如果失敗,您可以簡單地將搜尋擴展到全部文件:

sudo grep -r "/home/user/dir" /

或者您可以搜尋修改該PATH變數的所有檔案:

sudo grep -r "PATH=" /

答案2

將使用者目錄作為 root 放在全域路徑中通常是一個壞主意;)您檢查過該/etc/environment檔案嗎?

答案3

@Dennis 給我指出了一個好主意!我在我的內部搜尋/etc並找到了它,但是使用了另一個命令,因為他的命令僅搜尋檔案名稱(據我所知)。

我使用成功的一個是

find / -type f -exec grep -i /home/user/dir '{}' \; -print

答案4

如果您正在深入尋找 PATH 中定義的某些內容,您可以嘗試使用此替代方法銀色搜尋者用於快速搜尋。

預設情況下,它輸出與行號相符的內容,因此與 結合起來egrep僅取得檔案名稱的輸出。如果您不想重複,它還會輸出包含匹配項的行號,以便cut隔離檔案名稱。uniq當然,如果您不想完整輸出匹配項,則可以省略任何管道命令。

ag -s '/home/user/dir' | egrep '^\d+' | cut -d ':' -f 1 | uniq

相關內容