Solaris - 永久更新所有用户的 PATH

Solaris - 永久更新所有用户的 PATH

我已在 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,或者如果他们自己没有编辑过它们,则覆盖它们。

相关内容