我的問題與另一個開放問題有關問題。我的 echo $PATH 給我一個輸出,就像
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/
但跑步
ifconfig
給我一個像這樣的輸出
Command 'ifconfig' is available in '/sbin/ifconfig'
The command could not be located because '/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative privileges associated with your user account.
ifconfig: command not found
運行其他問題中給出的命令後
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
它運行如果配置但會阻止 rubyrails 或 rvm 的其他命令。
尋求幫助如何解決這個問題。還有為什麼會出現這種情況呢?
答案1
嘗試下面的命令
export PATH=$PATH:/usr/sbin
或者(如果您想設定所有路徑)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
答案2
您的原文$PATH
(您發布的行不太可讀):
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:
/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:
/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:
/usr/local/bin:/usr/bin:/bin:/usr/games:
/home/sahil/.rvm/bin{}:
/home/android-sdks/{}:
/home/android-sdks/platform-tools/{}:
/home/android-sdks/tools/{}:
/home/sahil/android-sdks/tools{}:
/home/sahil/android-sdks/tools:
/home/sahil/android-sdks/platform-tools/
你有/usr/local/bin
,/usr/bin
並且/bin
。正如您已經發現的ifconfig
那樣/sbin
。
因此,在設定該路徑的位置,您還需要包含/sbin
.
看紅寶石有關如何執行此操作的文件。
答案3
/sbin 通常是路徑的一部分。其他發行版(例如 fedora)在普通用戶的 PATH 中沒有它,但我認為 Ubuntu 總是有。我建議您檢查 /etc/environment 文件,看看它是否有效並且是否已將 /sbin 添加到路徑中。當我跑步時貓 /etc/環境,我得到以下輸出:
adnan@adnan-laptop:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
如你看到的/sbin已經是 PATH 環境變數的一部分。如果您的檔案具有相同的內容,則檢查其權限,否則將 /sbin 新增至此檔案的 PATH 中。對我來說權限是:
adnan@adnan-laptop:~$ ls -l /etc/environment
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
答案4
變數是什麼PATH
?
PATH
是目錄路徑列表。當使用者鍵入命令而不提供完整路徑時,將檢查此清單以查看它是否包含指向該命令的路徑。此變數中的路徑順序表示搜尋指令的順序,如果多個目錄中存在同名程序,則位於最靠近清單開頭(左側)的資料夾中的程式將會被搜尋執行。
其他命令(來自 ruby Rails 和 rvm)被封鎖的原因是因為您執行了以下命令:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
導致PATH
一個不含此類程式的資料夾,即:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin
相反,您應該做的是添加/sbin
到您自己的PATH
.
如何添加/sbin
到PATH
由於PATH
基本上始終在環境中,因此您不需要導出它,只需將/sbin
目錄添加到其中即可。為此,您可以在 bash 中執行
PATH="$PATH:/sbin"
你的路徑現在應該是這樣的:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/:/sbin
不過,此變更不會是永久性的,一旦關閉,目前會話PATH
將重新載入先前的值。為了使其永久化,您應該將此更改添加到您的~/.profile
文件中。一種方法如下:
echo 'PATH="$PATH:/sbin"' >> ~/.profile
現在你只需要在目前shell中執行「~/.profile」的內容即可。
source ~/.profile
您已準備好開始,不僅您當前的 shell,而且您未來的所有會話都將包含PATH
包含該目錄。
為什麼我使用 ~/.profile 而不是 ~/.bashrc?
這個概念對您可能有用:
~/.profile
是放置適用於整個會話的內容的地方,例如您登入時要啟動的程序(但不是圖形程序,它們進入不同的文件)和
環境變數定義。
~/.bashrc
是放置僅適用於 bash 本身的內容的地方,例如別名和函數定義、shell 選項和提示設定。 (您也可以將鍵綁定放在那裡,但對於 bash,它們通常進入 ~/.inputrc。)
你應該有/sbin
嗎PATH
?
我不打算在這裡討論默認情況下是否/sbin
應該默認,PATH
因為這可能不是一個非常富有成效的討論。我有,你想要的話也可以拿。你的來電。