
PATH
次の場所にある2つの異なるスクリプトで変数を変更しようとしています。/etc/profile.d/
/etc/profile.d/php.sh
#!/bin/sh PATH=$PATH:/usr/local/php/bin export PATH
/etc/profile.d/mysql.sh
#!/bin/sh PATH=$PATH:/usr/local/mysql/bin export PATH
CentOSを再起動してPATH
変数(編集済み)を確認しましたが、$ PATHが2回修正されました!
[]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:
/usr/local/mysql/bin:/usr/local/php/bin:/home/IntUser/bin:/usr/local/mysql/bin:
/usr/local/php/bin
[]$
ルートモードで:
[]$ su
Password:
[]#
$ PATHが3回修正されました!
[]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:
/usr/local/mysql/bin:/usr/local/php/bin:/home/IntUser/bin:/usr/local/mysql/bin:
/usr/local/php/bin:/usr/local//mysql/bin:/usr/local/php/bin
[]#
一度だけ割り当てたらどうでしょうか?
答え1
問題を解決する方法は次のとおりです。/etc/profile.d/php.sh
ファイルの内容を次のように置き換えます。
pathmunge /usr/local/php/bin after
ファイルも同じです/etc/profile.d/mysql.sh
。
pathmunge /usr/local/mysql/bin after
説明は/etc/profile.d/*.shのファイルです源泉/etc/profile
(bashシェルにログインして得たもの)。
これらのファイルはソースとして提供されるため、/etc/profile
ファイル内のすべての変数と関数を使用できます。これは、まだ存在していないpathmunge
ディレクトリに新しいディレクトリを追加することが唯一の目的である(私のFedora 20の)機能です。PATH
このキーワード
after
はPATH
。
これにより重複は発生しません。しかし、なぜあなたがそれを持っているのかわかりません。
答え2
これは、構成内の項目が/etc/profile
複数回ロードされるために発生します。見つけて修正する必要があります。
このファイルは/etc/profile
ログインシェルから読み込まれます。また、多くのプラットフォームでグラフィカルセッションにログインすると読み込まれます(ただし、ディスプレイマネージャ、セッションマネージャ、およびディストリビューションの設定方法によって異なります)。
/etc/profile
1つの考えられる問題は、別の場所(たとえば)からデータを要求していることです~/.bashrc
。この場合は削除してください。実行してgrep -s profile ~/.*
潜在的な犯人を確認します。su
読み取りの実行後に/etc/profile
問題のインスタンスが1つ以上ある必要があり、関連する可能性があります.bashrc
。
別の考えられる問題は、GUIセッションで端末を開く間にログインシェルを実行することです。解決策はログインシェルを実行することではありません。すでにGUIセッションにログインしており、端末は一般的なアプリケーションです。
/home/IntUser/bin
以前に一度表示され、その後に別のディレクトリがあるので/etc/profile
。/home/IntUser/bin
または、設定を変更したくない場合は、ディレクトリがまだ存在しない場合にのみPATHにディレクトリを追加するだけです。
case :$PATH: in
*:/usr/local/php/bin:*) :;;
*) PATH=$PATH:/usr/local/php/bin;;
esac