Java类path – Linux

我想了解classpath是如何工作的。 在networkingsearch后,这是我到目前为止:

我已经添加了

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

/etc/environment 。 顺便说一下,我正在运行Ubuntu

Javafindpath并编译没有问题。

问题是,如果我更改了CLASSPATH,然后执行: source /etc/environment ,则不会应用新的CLASSPATH。 当且仅当我重新启动系统时才应用它。 例如,如果我删除

 export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

行,然后我做源/ etc /环境,我终于做了echo $CLASSPATH ,我得到的是/home/foo:/home/foo/Java_code/my_code 。 我想我应该得到一个空白的线,不是吗?

有没有办法在PATH或CLASSPATHvariables中立即应用更改,而无需重新启动系统?

它可能会帮助您知道/ 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 

将删除一个现有的Classpath。 有多个位置可以设置或取消设置类路径 – 缺少的条目不会取消设置。

当你删除

 export CLASSPATH="/home/foo:/home/foo/Java_code/my_code" 

行然后source ...它不会删除CLASSPATH,因为它已经被设置。 它不清除已经定义的变量。

/etc/environment文件不是一个普通的shell脚本; 当您启动或登录到系统时,它不会作为shell脚本执行。 因此,使用source /etc/environment运行它与正常启动系统时不一样。

请参阅: Ubuntu环境变量

/etc/environment – 这个文件专门用于系统范围的环境变量设置。 它不是一个脚本文件 ,而是由赋值表达式组成,每行一个。 具体来说,该文件存储系统范围的区域设置和路径设置。