在 Linux 上设置系统范围的环境变量的最佳位置是哪里?

在 Linux 上设置系统范围的环境变量的最佳位置是哪里?

我只想设置一个系统范围的环境变量JAVA_HOME所有用户,包括 root用户。

要求:

  • 普通用户可以访问
  • 可供 root 访问
  • 始终加载,不仅适用于 bash(gnome-terminal 默认不启动 bash)
  • 在 Ubuntu、Debian 和 Red Hat 上工作
  • 如果可以轻松编写脚本就好了

答案1

对于 Ubuntu 以及可能的其他 *nix 平台,在/etc/profile.dnamed中添加一个新脚本java.sh,例如:

echo "export JAVA_HOME=/usr/lib/jvm/default-java" > /etc/profile.d/java.sh

其他被排除的考虑因素:

  • /etc/environment- 可以工作,但使用其他工具维护起来会更困难(或者人们会编辑它);并且
  • /etc/profile- 缺点与/etc/environment

答案2

在 Debian/Ubuntu 上/etc/环境

我不知道 Red Hat 的对应版本。

答案3

我不明白为什么您排除了 /etc/profile。那是正确的位置。

答案4

附注:看一下模块环境每次我需要为数十或数百名用户提供复杂、版本化、可自我扩展、简洁的 UNIX 环境时,我都会使用它。它主要用于大规模多用户 HPC 环境。仅将其用于一个特定变量肯定是过度设计,但一旦您需要多个软件包及其环境,它就会发挥出色的作用。

相关内容