0

knoppix 7.0.3 を使用していて、PATH 環境変数を設定しようとしています。公式の Ubuntu ドキュメントによると、これには /etc/environment が優先されるはずです。そこで、ファイルに次の行を追加しました。

JAVA_HOME="/usr/lib/jvm/java-6-sun"
GRAILS_HOME="/home/knoppix/grails"
PATH="${PATH}:${JAVA_HOME}/bin:${GRAILS_HOME}/bin"

しかし、システムを再起動した後、ファイルは元のファイルに戻りました (私は永続ストレージを使用していました)。次に、いくつかのグーグルの後、 ~/.profile を次のように編集しようとしました:

export JAVA_HOME="/usr/lib/jvm/java-6-sun"
export GRAILS_HOME="/home/knoppix/grails"
export PATH=$PATH:$JAVA_HOME/bin:$GRAILS_HOME/bin

今回は、最初の 2 つの変数が設定されました (コンソールにエコーされました) が、PATH は設定されませんでした。私がエコーしたとき、それはまだデフォルトのものでした。どうしたの?

4

2 に答える 2

1

/etc/profile次の行を変更します。

PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
于 2012-10-24T23:04:30.517 に答える
0

問題は、PATH読み取り後に bash の初期化中に上書きされること.profileです。

bash のマンページから:

bash が対話型ログイン シェルとして、または --login オプションを指定した非対話型シェルとして呼び出されると、ファイルが存在する場合、最初にファイル /etc/profile からコマンドを読み取り、実行します。そのファイルを読み取った後、~/.bash_profile、~/.bash_login、および ~/.profile をこの順序で検索し、最初に存在して読み取り可能なコマンドからコマンドを読み取って実行します。--noprofile オプションは、シェルの起動時にこの動作を禁止するために使用できます。

...

ログイン シェルではないインタラクティブ シェルが開始されると、bash は ~/.bashrc ファイルが存在する場合はそこからコマンドを読み取り、実行します。これは、 --norc オプションを使用することで抑制できます。--rcfile file オプションを指定すると、bash は ~/.bashrc ではなく、ファイルからコマンドを読み取って実行するようになります。

.bashrcあなたの経験から、存在しない場合、bash はデフォルト値に設定しようとしていることは明らかPATHです (誰かがこれを確認してくれれば幸いです)。

質問のコメントで説明したように、exportコマンドを追加する.bashrc(したがってファイルを作成する) ことで問題が解決します。または、追加することもできます

source ~/.profile

.bashrc同じ効果のためにファイルの最後まで。

于 2012-08-01T14:34:39.657 に答える