我试图理解classpath是如何工作的。在网上搜索之后,这是我到目前为止所处的位置:
我添加了
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"
感谢您的时间。
答案 0 :(得分:6)
我认为你不应该在系统范围的文件中放置主目录的本地路径。除非您提供一些对所有用户都有必要或有益的更改,否则我会单独留下/etc/environment
。
将任何更改添加到主目录中的.bashrc
中的CLASSPATH。
CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code
export CLASSPATH
通过这种方式,您可以获取它,任何新启动的bash都可以立即进行设置。
答案 1 :(得分:5)
export CLASSPATH=""
或更好
unset CLASSPATH
将删除现有的Classpath。有多个位置可以设置或取消设置类路径 - 缺少的条目不会取消设置。
答案 2 :(得分:3)
删除时
export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"
行然后source ...
它不会删除CLASSPATH,因为它已经设置好了。它不清楚已经定义的变量。
答案 3 :(得分:2)
/etc/environment
文件不是普通的shell脚本;启动或登录系统时,它不会作为shell脚本执行。因此,使用source /etc/environment
运行它与正常启动系统时不一样。
请参阅:Ubuntu environment variables
/etc/environment
- 此文件专门用于系统范围的环境变量设置。 它不是脚本文件,而是由赋值表达式组成,每行一个。具体来说,此文件存储系统范围的区域设置和路径设置。