【问题标题】:System.getenv not finding envrionment variablesSystem.getenv 找不到环境变量
【发布时间】:2015-11-08 02:48:49
【问题描述】:

我在 EC2 上的 Ubuntu 实例上获取环境变量时遇到问题。

这是我的/etc/environment 文件中的内容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
DATABASE_URL="postgres://postgres:postgres@localhost:5432/suredbitsweb"

现在,当我加载 Scala 解释器时,我尝试执行以下操作:

^Cubuntu@ip-172-31-35-31:~/suredbits-web$ sudo sbt console
[info] Loading project definition from /home/ubuntu/suredbits-web/project
[info] Set current project to suredbits-web (in build file:/home/ubuntu/suredbits-web/)
[info] Downloading Bower dependencies for suredbits-web
[info] https://github.com/MrRio/jsPDF.git#1.0.272
[info] 1.0.272 against https://github.com/MrRio/jsPDF.git#~1.0.272
[info] git://github.com/bitpay/bitcore-ecies.git#0.10.2
[info] 0.10.2 against git://github.com/bitpay/bitcore-ecies.git#^0.10.0
[info] git://github.com/bitpay/bitcore.git#0.10.4
[info] 0.10.4 against git://github.com/bitpay/bitcore.git#^0.10.4
[info] git://github.com/bitpay/bitcore-explorers.git#0.10.4
[info] 0.10.4 against git://github.com/bitpay/bitcore-explorers.git#~0.10.4
[info] git://github.com/bitpay/bitcore-message.git#0.10.1
[info] 0.10.1 against git://github.com/bitpay/bitcore-message.git#~0.10.1
[info] Starting scala interpreter...
[info] 
Welcome to Scala version 2.11.4 (OpenJDK 64-Bit Server VM, Java 1.7.0_79).
Type in expressions to have them evaluated.
Type :help for more information.

scala> System.getenv("PATH");
res0: String = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

scala> System.getenv("DATABASE_URL");
res1: String = null

scala> 

我已经“重新启动”了我的 EC2 实例,希望这将有助于获取新的环境变量。我也尝试将环境变量添加到我的~/.bashrc,但没有成功。

【问题讨论】:

  • 使用 echo $DATABASE_URL 命令可以从普通 shell 中看到您的 DATABASE_URL 吗?

标签: java scala ubuntu amazon-ec2 jvm


【解决方案1】:

我发现问题在于使用 sudo 命令运行它。它会导致覆盖您的环境变量。要保存环境变量,请使用 -E 标志运行它,即

sudo -E sbt console

【讨论】:

  • 我在 OP 中添加了更多关于我如何启动 Scala 解释器的信息。如果这很重要,我正在使用命令sbt console。这是针对 Scala Playframework 项目的
  • 查看我的编辑并尝试 sudo -E。看起来你的 sudo 覆盖了你的环境变量。
  • 这就是问题所在。谢谢!请格式化您的答案以表明 sudo -E sbt console 是解决问题的原因。
【解决方案2】:

首先,检查echo $PATHecho $DATABASE_URL 的输出。

其次,检查您是否从正确的用户启动了 scala 解释器。

仅供参考:scala 中不需要分号。

【讨论】:

  • 如果他把它放到/etc/environment,那么变量应该是系统范围的,而不是用户特定的。
  • 对。所以,这个建议是无关紧要的。
  • ubuntu@ip-172-31-35-31:~/suredbits-web$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr /bin:/sbin:/bin:/usr/games:/usr/local/games ubuntu@ip-172-31-35-31:~/suredbits-web$ echo $DATABASE_URL postgres://postgres:postgres@localhost :5432/suredbitsweb ubuntu@ip-172-31-35-31:~/suredbits-web$
猜你喜欢
  • 2011-07-04
  • 1970-01-01
  • 2016-07-11
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
相关资源
最近更新 更多