PATH 變數會被損壞嗎?

PATH 變數會被損壞嗎?

我安裝了 rbenv,一個 ruby​​ 版本管理程式。我查看了 .bashrc 文件,發現路徑變數已更改如下:

export PATH="$HOME/.rbenv/bin:$PATH"

我認為包含“:$ PATH”部分是為了包含舊路徑內容。我想知道如果修改路徑變數的程式不包含“:$PATH”部分會發生什麼。我是否無法從命令列運行某些程序,因為它們所在的 bin 目錄不再包含在新的路徑變數中?

答案1

你是對的。因此,第三方包應該只擴展當前路徑,而不是限制它。

答案2

PATH是用冒號分隔的目錄列表,您的 shell(bashfishkshsh等)使用這些目錄來尋找要執行的內容。如果您在 shell 中鍵入的行的第一個單字不是 Shell 內建命令或別名,則 shell 將逐步遍歷 中的目錄列表$PATH,查找與您鍵入的命令的第一個單字同名的可執行檔。

command not found常見指令 ( da/media/w3/0123-4567/PODCASTS/2016-Nov-27/loe-wildlife-decline.mp3te, ls, ...) 的錯誤表示PATH.PATH可以設定緊急情況(足以讓您解決問題export PATH=/usr/bin:/bin:/usr/local/bin:/snap/bin)。

許多PATH錯誤是 shell 語法錯誤(Space之前或之後=。它是PATH=value,沒有空格)。

至於“路徑損壞”,如果我創建了一個“特殊”版本的ls,存儲在/.evil/bin/ls,並且我可以損壞您的路徑,以便它具有/.evil/bin /bin,當您鍵入時ls,shell 將運行/.evil/bin/ls而不是/bin/ls.這是一個眾所周知的陷阱,但當你的系統變得有用時,它就已經被徹底滲透了。

答案3

您將能夠運行它們,只需指定完整路徑即可。修改PATH不會修改關聯的權限。

相關內容