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"

он работаетifconfigно блокирует другие команды 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"

Как вы видете/сбинуже является частью переменной окружения 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

Теперь вам просто нужно выполнить содержимое «~/.profile» в текущей оболочке.

source ~/.profile

Теперь вы готовы к работе, и не только ваша текущая оболочка, но и все ваши будущие сеансы будут содержать PATHэтот каталог.

Почему я использовал ~/.profile вместо ~/.bashrc?

Эта концепция может быть вам полезна:

  • ~/.profileэто место для размещения данных, которые относятся ко всему сеансу, например, программ, которые вы хотите запускать при входе в систему (но не графических программ, они помещаются в другой файл), а также
    определений переменных среды.

  • ~/.bashrcэто место для размещения вещей, которые относятся только к самому bash, таких как определения псевдонимов и функций, параметры оболочки и настройки приглашения. (Вы также можете разместить там привязки клавиш, но для bash они обычно находятся в ~/.inputrc.)

Более подробную информацию по этой теме вы здесь не найдете.

Должны ли вы иметь /sbinв своем PATH?

Я не собираюсь здесь обсуждать, /sbinдолжно ли или не должно быть PATHпо умолчанию, потому что это может оказаться не очень продуктивным обсуждением. У меня это есть, вы можете иметь это, если хотите. Ваш выбор.

Связанный контент