
我安裝了 rbenv,一個 ruby 版本管理程式。我查看了 .bashrc 文件,發現路徑變數已更改如下:
export PATH="$HOME/.rbenv/bin:$PATH"
我認為包含“:$ PATH”部分是為了包含舊路徑內容。我想知道如果修改路徑變數的程式不包含“:$PATH”部分會發生什麼。我是否無法從命令列運行某些程序,因為它們所在的 bin 目錄不再包含在新的路徑變數中?
答案1
你是對的。因此,第三方包應該只擴展當前路徑,而不是限制它。
答案2
PATH
是用冒號分隔的目錄列表,您的 shell(bash
、fish
、ksh
、sh
等)使用這些目錄來尋找要執行的內容。如果您在 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
不會修改關聯的權限。