web-dev-qa-db-ja.com

エクスポートPATHが正しく機能しません

$PATHエクスポートに問題があります。 $PATHを変更した場所は、/etc/environmentのみです。

Android_HOME="/opt/ADT/adt-bundle-linux-x86_64-20130522/sdk"
PROJECT_HOME="/home/tomaszchabinka/Dokumenty/tempFile/Android_stb"
PATH="/opt/gradle-1.10/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

しかし、ターミナルecho $PATHと入力すると、次の結果が返されます。

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/jdk1.7.0/bin

/usr/lib/jvm/jdk1.7.0/binディレクトリがないため、$PATHエクスポートが機能しない理由と/usr/lib/jvm/jdk1.7.0/binがどこから来たのかがわかりません。

また、$Android_HOMEおよび$PROJECT_HOMEは正しくエクスポートされます。 $ PATHエクスポートのみが機能しません。

誰も私を助けることができますか?

2
pstrag

$PATHを定義できる場所がいくつかあります。

  • /etc/environmentは、すべてのユーザーに影響するプレーンテキストファイル(スクリプトではない)です
  • ~/.pam_environment-同じことですが、ユーザー固有

bashは、$PATHの変更に使用できるいくつかのスクリプトも実行します。

  • ログインシェルセッションに対して~/.profileが実行されます(意味を聞かないでください:)
  • ~/.bashrcは、非ログインインタラクティブシェルセッションに対して実行されます
  • /etc/profileおよび/etc/bash.bashrcは、~/.profileおよび~/.bashrcのシステム全体の代替です

/etc/environment$PATHを定義するための推奨場所であることをどこかで読みました。だから私は通常それを使用します。ただし、おそらく他の場所の1つでパスが変更されています。

ところで、Sudoを指定してコマンドを実行すると、通常はrootユーザーの$PATH(非特権ユーザーアカウントの$PATHではなく)を使用すると思います。したがって、~/.pam_environmentディレクトリ内の~/.profile~/.bashrcおよび/rootも役割を果たします。

2
Alexey