【问题标题】:How do I set environment variables for system users in Ubuntu?如何在 Ubuntu 中为系统用户设置环境变量?
【发布时间】:2011-07-15 18:38:44
【问题描述】:

我为我的 glassfishv3 安装创建了一个没有交互式 shell 的系统用户,因此当通过 asadmin 启动 glassfish 时,没有在该用户上设置环境变量。

我尝试在我的初始化脚本中使用以下命令在环境中进行复制:

jhv=$(grep JAVA_HOME /etc/environment)
$jhv
export JAVA_HOME    
sudo -u glassfish -E $glassfishpath/asadmin start-domain domain1

在 asadmin 内部,我回显 $JAVA_HOME,它会正确打印 JAVA_HOME。

glassfish 启动后,我使用一种打印环境键值对的方法启动 Web 服务。 JAVA_HOME 不在其中。这会导致 glassfish 执行的任何需要 JAVA_HOME 的脚本出现问题。

那么如何在系统用户/glassfish 环境中设置 JAVA_HOME,以便在启动 java 容器后仍然存在?

【问题讨论】:

  • 我对GF不熟悉。 “启动 Web 服务”意味着什么?另外,你是如何打印键值对的?
  • @Ryan Stewart - glassfish 作为一个 java web 容器可以托管 java web 服务。容器已知的应用程序(Web 服务)是在客户端调用它们时创建或初始化的。至于您的其他问题:Java 能够通过使用返回环境条目映射的 System.getenv(); 来获取环境变量。通过遍历条目,您可以将键值对附加到字符串,然后从服务返回字符串作为响应。
  • 对不起,我应该注意到我是一名 Java 开发人员,所以我知道这个领域。我只是没用过GF。我主要使用 Tomcat。但是,除非 GF 与我使用的其他容器有很大不同,否则它实际上不会为 Web 服务生成单独的 OS 进程,对吧?您只是在部署 WAR 吗?
  • 您在 Web 服务中使用什么代码来获取 JAVA_HOME?

标签: java ubuntu glassfish environment-variables glassfish-3


【解决方案1】:

通常,解决方案是在 sudo 命令中添加 -E 标志。此标志告诉 sudo 在进入 root 访问权限时维护当前用户的环境变量。

看起来你已经在使用这个标志了,所以我不知道问题是什么。可能是该标志在您的脚本中静默失败并且您没有收到通知。您是否尝试过在 shell 中运行脚本的命令手册?结果/输出是什么?

【讨论】:

  • 问题说 JAVA_HOME 在由 sudo 运行的 asadmin 脚本中设置正确。这意味着 -E 正在工作,但值在某处丢失了。
猜你喜欢
  • 2013-11-11
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 2015-08-20
  • 2015-09-16
  • 2012-07-02
相关资源
最近更新 更多