web-dev-qa-db-ja.com

ifconfig:コマンド 'ifconfig'は '/ sbin / ifconfig'で利用可能です

私の質問は別の未解決 question に関連しています。私のエコー$ 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
Sahil Grover

以下のコマンドを試してください

export PATH=$PATH:/usr/sbin

または(すべてのパスを設定する場合)

export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
7

/sbin$PATHに追加することで、これを簡単に解決できます。より重要な点は、デフォルトでパスに/sbinを含めるべきではないということです

理由の説明については、このページを参照してください。 /sbinディレクトリ定義

/sbinには、rootまたはSudo権限を使用して実行する必要があるシステムユーティリティが含まれています。したがって、ネットワーク構成を表示するには、次のように入力します。

Sudo /sbin/ifconfig

パスワードの入力を求められ、ifconfigが実行されます。

1
ZacSketches

元の$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 のドキュメントを参照してください。

1
Rinzwind

/ 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環境変数の一部です。ファイルの内容が同じ場合は、アクセス許可を確認してください。そうでない場合は、このファイルのPATHに/ sbinを追加してください。私にとっての権限は次のとおりです。

adnan@adnan-laptop:~$ ls -l /etc/environment 
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
1
binW

PATHvariableとは何ですか?

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

代わりに行うべきことは、自分のPATH/sbinを追加することです。

/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ファイルに追加する必要があります。その方法の1つは次のとおりです。

echo 'PATH="$PATH:/sbin"' >> ~/.profile

ここで、現在のシェルで「〜/ .profile」のコンテンツを実行するだけです。

source ~/.profile

準備が整いました。現在のシェルだけでなく、今後のすべてのセッションには、ディレクトリを含むPATHが含まれます。

なぜ〜/ .bashrcの代わりに〜/ .profileを使用したのですか?

この概念はあなたにとって有用です:

  • ~/.profileは、ログイン時に起動したいプログラムなどのセッション全体に適用されるものを配置する場所です(ただし、グラフィカルプログラムではなく、別のファイルに移動します)。
    環境変数の定義。

  • ~/.bashrcは、エイリアスと関数の定義、シェルオプション、プロンプト設定など、bash自体にのみ適用されるものを配置する場所です。 (そこにキーバインディングを配置することもできますが、bashの場合は通常〜/ .inputrcに入ります。)

ここでこのトピックに関する詳細情報を取得することはできません。

PATH/sbinが必要ですか?

/sbinがデフォルトでPATHにあるべきかどうかについては、ここで説明するのはあまり生産的な議論ではないことがあるので、ここでは説明しません。私はそれを持っている、あなたが望むなら、あなたはそれを持つことができます。あなたの電話。