ifconfig :指令「ifconfig」在「/sbin/ifconfig」中可用

ifconfig :指令「ifconfig」在「/sbin/ifconfig」中可用

我的問題與另一個開放問題有關問題。我的 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"

它運行如果配置但會阻止 ruby​​rails 或 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.

如何添加/sbinPATH

由於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。)

您無法在此處獲取有關此主題的更多資訊。

你應該有/sbinPATH

我不打算在這裡討論默認情況下是否/sbin應該默認,PATH因為這可能不是一個非常富有成效的討論。我有,你想要的話也可以拿。你的來電。

相關內容