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 添加到路径中。当我运行猫/等/环境,我得到以下输出:

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因为这可能不是一个很有成效的讨论。我有,如果你想要也可以。你来决定。

相关内容