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.

Ищу помощь, как решить эту проблему. И почему это происходит?

6
задан 13 April 2017 в 15:23

5 ответов

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

См. На этой странице описание того, почему: /sbin определение каталога

/sbin содержит системные утилиты, которые должны запускаться пользователем root или с правами sudo. Поэтому, если вы хотите увидеть конфигурацию своей сети, просто введите:

sudo /sbin/ifconfig

Вам будет предложено ввести пароль, а затем ifconfig запустится.

0
ответ дан 13 April 2017 в 15:23

Ваш оригинальный $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 документы о том, как это сделать.

0
ответ дан 13 April 2017 в 15:23

/ 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
0
ответ дан 13 April 2017 в 15:23

Что такое переменная 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 - это место для размещения материалов, относящихся ко всему сеансу, таких как программы, которые вы хотите запустить при входе в систему (но не графические программы, они переходят в другой файл), и
    [ 1125] определения переменных среды.

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

Вы не можете получить больше информации об этой теме здесь . [+1124]

Если у вас есть /sbin в вашем PATH?

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

0
ответ дан 13 April 2017 в 15:23

Попробуйте команду ниже

export PATH=$PATH:/usr/sbin

ИЛИ (если вы хотите установить все пути)

export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: