如何在Knoppix中设置PATH?

时间:2012-08-01 13:47:23

标签: linux environment-variables

我正在使用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没有。当我回应时,它仍然是默认的。怎么了?

2 个答案:

答案 0 :(得分:1)

修改以下行中的/etc/profile

PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

答案 1 :(得分:0)

问题是,在阅读PATH之后,在初始化bash期间,您的.profile被覆盖。

来自the manpage of bash

  

当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文件的末尾以获得相同的效果。