我已在 Solaris 11 计算机上安装了 JDK 和 Groovy。我现在想进行设置,以便每当我打开 shell 时 PATH 变量都包含 bin 目录。
据我了解,在文件末尾添加的以下几行/etc/profile
应该可以解决问题。
JAVA_HOME=/usr/jdk/instances/jdk1.7.0
PATH=${PATH}:${JAVA_HOME}/bin
GROOVY_HOME=/usr/local/bin/groovy-2.1.3
PATH=${PATH}:${GROOVY_HOME}/bin
export PATH
但是,当我重新启动 Putty 会话时,只有 JAVA_HOME 和 GROOVY_HOME 变量受到影响。 PATH 变量保持不变,例如
/usr/bin:/usr/sbin
我想知道是否有另一个脚本在 /etc/profile 之后运行,它可能会覆盖 PATH 变量。但我不知道去哪里看。
还是还有其他问题?
正如评论中所提出的,我尝试使用以下几行来代替,但不幸的是具有相同的效果。
JAVA_HOME=/usr/jdk/instances/jdk1.7.0
GROOVY_HOME=/usr/local/bin/groovy-2.1.3
export PATH=${PATH}:${GROOVY_HOME}/bin:${JAVA_HOME}/bin
答案1
检查/etc/default/login
登录 shell。您可以在那里强制设置初始路径。
将变量添加到 /etc/profile 应该可以工作,具体取决于运行的 Solaris 版本。对于 Solaris,一种更可移植的方法是单独设置 PATH 变量并将其导出。
JAVA_HOME=/usr/jdk/instances/jdk1.7.0
GROOVY_HOME=/usr/local/bin/groovy-2.1.3
PATH=${PATH}:${GROOVY_HOME}/bin:${JAVA_HOME}/bin
export PATH
Solaris 11(bash
默认 shell)可以与您的配置文件正常工作,但较旧的 Solaris 版本可能无法export PATH=...
按预期解析语法,或者根本无法解析语法。
另外,请记住,您只是更改用户的初始路径。 在读取 /etc/profile
用户的之前读取。.profile
默认情况下,Solaris 用户通常会得到自己的.profile
包含默认路径的文件。
solaris:~$ grep PATH .*
.profile:export PATH=/usr/bin:/usr/sbin
由于正在读取此 .profile后您修改过的内容/etc/profile
,您的更改$PATH
将被丢弃,并且用户的条目将被接管。
您可以通过编辑文件为新用户添加这些更改/etc/skel/.profile
,但要使现有用户的更改永久生效,您需要编辑他们的个人 .profiles,或者如果他们自己没有编辑过它们,则覆盖它们。