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" 

它运行ifconfig但阻止ruby rails或rvm的其他命令。

寻求帮助如何解决这个问题。 为什么会这样呢?

尝试以下命令

 export PATH=$PATH:/usr/sbin 

或(如果要设置所有路径)

 export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/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: /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

有关如何执行此操作,请参阅rubygems文档。

/ sbin通常是路径的一部分。 像fedora这样的其他发行版在普通用户的PATH中没有它,但我认为Ubuntu总是如此。 我建议你检查你的/ etc / environment文件,看看它是否有效,并将/ sbin添加到路径中。 当我运行cat / etc / environment时 ,我得到以下输出:

 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 

您可以通过将/sbin添加到$PATH来轻松解决此问题。 更重要的一点是, 默认情况下,路径中不应该有/sbin

有关原因的说明,请参阅此页面: /sbin目录定义

/sbin包含应由root或sudo权限运行的系统实用程序。 因此,如果您想查看网络配置,只需键入:

 sudo /sbin/ifconfig 

系统将提示您输入密码,然后ifconfig将运行。

什么是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。)

您无法在此处获得有关此主题的更多信息。

你的PATH应该有/sbin吗?

我不打算在这里讨论/sbin是否应该或者不应该在PATH默认,因为这可能不是一个非常富有成效的讨论。 我有它,如果你愿意,你可以拥有它。 你的来电。