HOCON不替换环境变量

时间:2015-04-15 16:35:01

标签: scala akka hocon

我在https://github.com/typesafehub/config/blob/master/HOCON.md#substitution-fallback-to-environment-variables阅读了有关回退到环境变量的文档。我的理解是,这将吸引任何envars。所以,例如,如果从shell中我能​​够回显$ 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

3 个答案:

答案 0 :(得分:1)

这是一个黑暗中的镜头,但你使用的是旧版本的typesafe-config吗?也许它是一个更新的功能?这个功能似乎在你描述的时候做广告,但如果你把typesafe-config作为一个瞬态依赖(比如来自akka),也许你会得到一个旧版本。

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

答案 1 :(得分:1)

HOCON没有拿起envar的原因是我的应用程序作为Linux服务(Centos 6.5)运行,它清除了大多数环境变量。

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

答案 2 :(得分:1)

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