我正在使用knoppix 7.0.3并尝试设置PATH环境变量。根据Ubuntu官方文档,/etc/environment应该是最好的地方。因此,我在文件中添加了以下几行:
JAVA_HOME="/usr/lib/jvm/java-6-sun"
GRAILS_HOME="/home/knoppix/grails"
PATH="${PATH}:${JAVA_HOME}/bin:${GRAILS_HOME}/bin"但在重启系统后,该文件只是恢复为原始文件(我使用的是持久存储)。然后,在谷歌搜索之后,我尝试编辑~/.profile,如下所示:
export JAVA_HOME="/usr/lib/jvm/java-6-sun"
export GRAILS_HOME="/home/knoppix/grails"
export PATH=$PATH:$JAVA_HOME/bin:$GRAILS_HOME/bin这一次,设置了前两个变量(在控制台中回显),但路径没有。当我回显时,它仍然是默认的。怎么了?
发布于 2012-08-01 22:34:40
问题是,在bash初始化期间,在读取.profile之后,您的PATH会被覆盖。
来自the manpage of bash
当bash作为交互式登录shell或带有--
选项的非交互式shell被调用时,它首先读取并执行/etc/profile文件中的命令(如果该文件存在)。读取该文件后,它将按该顺序查找~/.bash_profile、~/.bash_login和~/.profile,并从第一个存在且可读的文件中读取和执行命令。当shell启动以禁止此行为时,可以使用--noprofile选项。
..。
当启动一个非登录shell的交互式shell时,bash将读取并执行~/.bashrc中的命令(如果该文件存在)。这可以通过使用--norc选项来禁止。rcfile文件选项将强制bash读取和执行文件中的命令,而不是~/.bashrc。
根据您的经验,很明显,如果.bashrc不存在,bash会尝试将PATH设置为默认值(如果有人确认这一点,我将不胜感激)。
正如我们在对您的问题的注释中所讨论的,向.bashrc添加export命令(从而创建文件)可以解决该问题。或者,您可以添加
source ~/.profile添加到.bashrc文件的末尾,以获得相同的效果。
发布于 2012-10-25 07:04:31
修改以下行上的/etc/profile:
PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"https://stackoverflow.com/questions/11760695
复制相似问题