[英]Java classpath - Linux
我试图了解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"
感谢您的时间。
我认为你不应该把你的主目录的本地路径放在系统范围的文件中。 除非你提供一些必要或有益于所有用户的更改,否则我会单独留下/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"
line然后source ...
它不会删除CLASSPATH,因为它已经设置好了。 它不清楚已经定义的变量。
/etc/environment
文件不是普通的shell脚本; 启动或登录系统时,它不会作为shell脚本执行。 因此,使用source /etc/environment
运行它与正常启动系统时不一样。
请参阅: Ubuntu环境变量
/etc/environment
- 此文件专门用于系统范围的环境变量设置。 它不是一个脚本文件 ,而是由赋值表达式组成,每行一个。 具体来说,此文件存储系统范围的区域设置和路径设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.