HOCON 不替换环境变量

HOCON not substituting environment variables

我已在 https://github.com/typesafehub/config/blob/master/HOCON.md#substitution-fallback-to-environment-variables 阅读了有关回退到环境变量的文档。我的理解是它会拾取任何 envars。因此,例如,如果从 shell 我能够执行 echo $HOSTNAME 并看到非空响应,那么 HOCON 也应该这样做。

在我的application.conf我有一行

akka.remote.netty.tcp.hostname = ${HOSTNAME}

但是,我的应用对此并不满意,无法启动。

/conf/application.conf: 9: Could not resolve substitution to a value:  ${HOSTNAME}

这是用户问题吗? shell 问题?我能够以用户身份登录并回显 $HOSTNAME

标记此 scala 和 akka,因为该用户群可能最常接触 HOCON

这是瞎猜的,但是您使用的是旧版本的 typesafe-config 吗?也许它是一个较新的功能?该功能似乎按照您的描述进行了宣传,但是如果您将 typesafe-config 作为瞬态依赖项引入(例如来自 akka),则可能您得到的是旧版本。

如果您删除 .conf 文件中的替换(因此解析成功)然后打印出 ConfigFactory.systemEnvironment() 的内容,会发生什么情况?供参考:http://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigFactory.html#systemEnvironment--

HOCON 没有选择 envar 的原因是我的应用程序作为 linux 服务 (Centos 6.5) 运行,它清除了大部分环境变量。

有关问题的相关描述,请参阅 https://unix.stackexchange.com/questions/44370/how-to-make-unix-service-see-environment-variables

HOSTNAME 不是环境变量。这是一个 bash 内部变量。有关详细信息,请参阅 https://superuser.com/questions/132489/hostname-environment-variable-on-linux