每当我打开一个Bash shell时,我的类路径就是“someProgram”。我知道向“.bashrc”添加导出条目会改变我的类路径,但我想知道其中“someProgram”被添加到类路径中(它不在“.bashrc”中)。
有没有办法追踪这个设置的位置,或者除了“.bashrc”之外我应该检查的一些典型位置?
详细信息:
我正在使用Ubuntu 9.10。
Eclipse版本:已安装3.5.1。
echo $SHELL
/bin/bash
java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.6.1) (6b16-1.6.1-3ubuntu1)
OpenJDK Server VM (build 14.0-b16, mixed mode)
javac -version
javac 1.6.0_15
如果需要,请提供更多详细信息。
选中:
实测!
的/ etc /环境
答案 0 :(得分:1)
在/ etc / profile文件中。
答案 1 :(得分:1)
答案取决于bash从何处读取配置文件。一个解释清楚的答案是here。摘录:
当bash作为交互式登录shell或具有--login选项的非交互式shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。在读取该文件之后,它按顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在且可读的第一个命令中读取并执行命令。启动shell以禁止此行为时,可以使用--noprofile选项。 ... 当启动不是登录shell的交互式shell时,如果存在这些文件,bash将从/etc/bash.bashrc和〜/ .bashrc读取并执行命令。使用--norc选项可以禁止此操作。 --rcfile文件选项将强制bash从文件中读取和执行命令,而不是/etc/bash.bashrc和〜/ .bashrc。
答案 2 :(得分:1)
重新检查所有这些文件,看看他们是否使用“.
”内置命令来源任何其他文件。
答案 3 :(得分:1)
啊是的,找到哪个启动文件来源的whackamole进程。我建议强制它,试试:
$ grep CLASSPATH .?*
$ grep -r CLASSPATH --binary-files=without-match /etc/ 2>/dev/null