0

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

4

2 回答 2

1

Modify /etc/profile on the following line:

PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
于 2012-10-24T23:04:30.517 回答
0

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

bash 的联机帮助页

当 bash 作为交互式登录 shell 或作为带有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的文件中读取并执行命令。当 shell 启动时,可以使用 --noprofile 选项来禁止这种行为。

...

当一个不是登录 shell 的交互式 shell 启动时,bash 会从 ~/.bashrc 读取并执行命令,如果该文件存在的话。这可以通过使用 --norc 选项来禁止。--rcfile 文件选项将强制 bash 从文件而不是 ~/.bashrc 读取和执行命令。

From your experience, it is apparent that if .bashrc doesn't exist, bash is trying to set PATH to a default value (I would appreciate if someone confirms this).

As we discussed in the comments on your question, adding the export commands to .bashrc (and thus creating the file) solves the problem. Alternatively, you can add

source ~/.profile

to the end of your .bashrc file for the same effect.

于 2012-08-01T14:34:39.657 回答