クラスパスが実際にどのように機能するかを理解しようとしています。ウェブを検索した後、これは私がこれまでに到達した場所です:
私が追加しました
export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"
/etc/environment
で。ちなみに私はUbuntuを実行しています。
Javaはパスを見つけて問題なくコンパイルします。
問題は、CLASSPATHを変更してから次のように変更した場合です。source /etc/environment
の場合、新しいCLASSPATHが適用されません。システムを再起動した場合にのみ適用されます。たとえば、
export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"
行、次に/ etc/environmentをソースし、最後にecho $CLASSPATH
を実行します。取得するのは/home/foo:/home/foo/Java_code/my_code
です。空の行が表示されるべきだと思いませんか?
システムを再起動せずに、PATHまたはCLASSPATH変数の変更をすぐに適用する方法はありますか?
/ etc/environmentファイルには元々次の行しか含まれていないことを知るのに役立つかもしれません:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
お時間をいただきありがとうございます。
システム全体のファイルには、ローカルからホームディレクトリへのパスを含めないでください。 /etc/environment
は、すべてのユーザーにとって必要または有益な変更を提供しない限り、そのままにしておきます。ホームディレクトリの.bashrc
のCLASSPATHに変更を加えます。
CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code
export CLASSPATH
このようにして、ソースを設定できます。新しく開始されたbashには、すぐに設定が反映されます。
export CLASSPATH=""
以上
unset CLASSPATH
既存のクラスパスを削除します。クラスパスを設定または設定解除できる場所は複数あります。欠落しているエントリによって設定が解除されることはありません。
削除すると
export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"
行、次にsource ...
CLASSPATHはすでに設定されているため、削除されません。すでに定義されている変数はクリアされません。
/etc/environment
ファイルは通常のシェルスクリプトではありません。システムを起動またはログインするときに、シェルスクリプトとして実行されません。したがって、source /etc/environment
は、通常システムを起動するときとは異なります。
参照: buntu環境変数
/etc/environment
-このファイルは、特にシステム全体の環境変数設定用です。 これはスクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。具体的には、このファイルにはシステム全体のロケールとパスの設定が格納されます。