我正在使用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
这次,前两个变量已设置(在控制台中回显),但PATH没有。当我回应时,它仍然是默认的。怎么了?
答案 0 :(得分:1)
修改以下行中的/etc/profile
:
PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
答案 1 :(得分:0)
问题是,在阅读PATH
之后,在初始化bash期间,您的.profile
被覆盖。
当bash作为交互式登录shell或具有--login选项的非交互式shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。在读取该文件之后,它按顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在且可读的第一个命令中读取并执行命令。启动shell以禁止此行为时,可以使用--noprofile选项。
...
当启动不是登录shell的交互式shell时,bash会读取并执行来自〜/ .bashrc的命令(如果该文件存在)。使用--norc选项可以禁止此操作。 --rcfile文件选项将强制bash从文件而不是〜/ .bashrc读取和执行命令。
根据您的经验,很明显如果.bashrc
不存在,bash会尝试将PATH
设置为默认值(如果有人确认,我会很感激。)
正如我们在您对您的问题的评论中所讨论的那样,将export
命令添加到.bashrc
(从而创建文件)可以解决问题。或者,您可以添加
source ~/.profile
到.bashrc
文件的末尾以获得相同的效果。