私の質問は別の未解決 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の他のコマンドをブロックします。
これを解決する方法を探しています。また、なぜこれが起こるのですか?
以下のコマンドを試してください
export PATH=$PATH:/usr/sbin
または(すべてのパスを設定する場合)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
/sbin
を$PATH
に追加することで、これを簡単に解決できます。より重要な点は、デフォルトでパスに/sbin
を含めるべきではないということです。
理由の説明については、このページを参照してください。 /sbin
ディレクトリ定義
/sbin
には、rootまたはSudo権限を使用して実行する必要があるシステムユーティリティが含まれています。したがって、ネットワーク構成を表示するには、次のように入力します。
Sudo /sbin/ifconfig
パスワードの入力を求められ、ifconfig
が実行されます。
元の$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環境変数の一部です。ファイルの内容が同じ場合は、アクセス許可を確認してください。そうでない場合は、このファイルのPATHに/ sbinを追加してください。私にとっての権限は次のとおりです。
adnan@adnan-laptop:~$ ls -l /etc/environment
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
PATH
variableとは何ですか?
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
を追加することです。
/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
ファイルに追加する必要があります。その方法の1つは次のとおりです。
echo 'PATH="$PATH:/sbin"' >> ~/.profile
ここで、現在のシェルで「〜/ .profile」のコンテンツを実行するだけです。
source ~/.profile
準備が整いました。現在のシェルだけでなく、今後のすべてのセッションには、ディレクトリを含むPATH
が含まれます。
なぜ〜/ .bashrcの代わりに〜/ .profileを使用したのですか?
この概念はあなたにとって有用です:
~/.profile
は、ログイン時に起動したいプログラムなどのセッション全体に適用されるものを配置する場所です(ただし、グラフィカルプログラムではなく、別のファイルに移動します)。
環境変数の定義。
~/.bashrc
は、エイリアスと関数の定義、シェルオプション、プロンプト設定など、bash自体にのみ適用されるものを配置する場所です。 (そこにキーバインディングを配置することもできますが、bashの場合は通常〜/ .inputrcに入ります。)
ここでこのトピックに関する詳細情報を取得することはできません。
PATH
に/sbin
が必要ですか?
/sbin
がデフォルトでPATH
にあるべきかどうかについては、ここで説明するのはあまり生産的な議論ではないことがあるので、ここでは説明しません。私はそれを持っている、あなたが望むなら、あなたはそれを持つことができます。あなたの電話。