我指的是以下网址 设置JAVA_HOME
我对 Nils 给出的最后一个解决方案感兴趣,即编辑 /etc/profile.local 文件,这将为所有用户设置它。问题是我使用的是 openSUSE 12.3 并且它没有 /etc/profile.local。
这种情况应该怎么办?
答案1
该/etc/profile.local
文件曾经是进行系统特定更改的位置,这些更改在/etc/profile
获得更新时不会被覆盖。
如果该文件存在,您的系统可能仍然会获取该文件,您可以检查/etc/profile
它是否存在(搜索profile.local
文件名,或者只是创建该文件并尝试。
但是,如果您有一个目录/etc/profile.d
,并且其中/etc/profile
有类似以下内容(来自 Ubuntu 12.04):
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
那么这个机制就会获取 ( . $i
) 在该目录中找到的每个文件。这是对单个.local
文件的更现代的解决方案(其优点是不同的包能够放入其文件并根据需要删除它们,而不会破坏其他内容)。如果您的 OpenSUSE 有类似的东西,您只需创建一个文件/etc/profile.d/your_name.sh
并将所需的代码放入其中即可。
如果您没有所有这些,您可以直接将行添加到/etc/profile
,但您确实会面临在软件包升级时丢失更改的风险。
答案2
从 openSUSE 的第一行开始/etc/profile
:
# /etc/profile for SuSE Linux
#
# PLEASE DO NOT CHANGE /etc/profile. There are chances that your changes
# will be lost during system upgrades. Instead use /etc/profile.local for
# your local settings, favourite global aliases, VISUAL and EDITOR
# variables, etc ...
这意味着您必须(从 root 帐户)创建/etc/profile.local
.然后/etc/profile
将自动获取甚至/etc/profile.local
在软件包更新时保留的内容。
答案3
从我的 openSuSE 15.2 系统的 /etc/profile 中:
#
# And now let's see if there is a local profile
# (for options defined by your sysadmin, not SUSE Linux)
#
test -s /etc/profile.local && . /etc/profile.local
在我们的生产 SLES 12.3 服务器上,它也有同样的事情。