You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下IntelliJ IDEA中System.getenv()无法读取新增环境变量问题

问题

在Ubuntu系统上使用IntelliJ IDEA Ultimate版本,尝试读取.bashrc中配置的环境变量,但通过System.getenv()无法获取到。

.bashrc中的配置如下:

export TWILIO_SMS_SERVICE_SID="XXXXXXXXXX"
export TWILIO_ACCOUNT_SID="XXXXXXXXXX"
export TWILIO_AUTH_TOKEN="XXXXXXXXXX"

在命令行执行echo $TWILIO_SMS_SERVICE_SID能得到正确值XXXXXXXXXX,但在代码中调用System.getenv("TWILIO_SMS_SERVICE_SID")返回null。执行以下代码时,能获取到其他环境变量,但看不到新增的这些变量:

println("Environment variables: ")
System.getenv().forEach { (key, value) -> println("$key: $value") }

请问可能的原因是什么?该如何解决?另外,如何为此做POC验证?


可能的原因

  • .bashrc仅在交互式bash shell中加载,若通过桌面图标/应用启动器打开IntelliJ,IDE继承的是桌面环境的变量,而非bash的.bashrc配置,因此读不到新增变量。
  • 修改.bashrc后未执行source ~/.bashrc重新加载,或未重启相关进程,导致新配置未生效。
  • 若从终端启动IntelliJ,但终端未加载最新的.bashrc(比如修改配置后未新开终端),也会导致变量无法被继承。

解决方法

方法1:在IntelliJ运行配置中直接添加变量

打开IntelliJ的Run/Debug Configurations,选中你的项目运行配置,在Environment variables栏添加需要的变量(格式:KEY=VALUE,多变量用分号分隔)。这种方式仅针对当前项目的运行配置生效,适合快速调试。

方法2:将变量配置到全局加载文件

把环境变量移到~/.profile或~/.bash_profile中(这两个文件在用户登录时会被加载,桌面环境启动时会继承这些变量):

  1. 编辑~/.profile,添加以下内容:
export TWILIO_SMS_SERVICE_SID="XXXXXXXXXX"
export TWILIO_ACCOUNT_SID="XXXXXXXXXX"
export TWILIO_AUTH_TOKEN="XXXXXXXXXX"
  1. 保存后注销并重新登录,或执行source ~/.profile后从终端启动IntelliJ。

方法3:从终端启动IntelliJ

先在终端执行source ~/.bashrc加载最新配置,然后通过idea.sh命令启动IntelliJ。此时IDE会继承终端的环境变量,就能读取到.bashrc中的配置。


POC验证建议

  1. 极简验证脚本:写一个仅输出目标变量的Kotlin程序,快速验证变量是否能被获取:
fun main() {
    val targetSid = System.getenv("TWILIO_SMS_SERVICE_SID")
    println("目标变量值: ${targetSid ?: "未获取到"}")
}
  1. 分步验证流程:
    • 终端直接运行脚本:执行source ~/.bashrc后,用kotlin 文件名.kt运行脚本,确认输出正确值。
    • IntelliJ直接运行脚本:此时输出应为未获取到,验证问题存在。
    • 应用任意一种解决方法后,再次从IntelliJ运行脚本,若输出正确值,则验证方法有效。
  2. 环境变量对比:分别在终端和IntelliJ中运行打印全量环境变量的代码,将输出保存为文件后对比,确认目标变量仅存在于终端的环境变量列表中。

内容的提问来源于stack exchange,提问作者Bruno Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:25:14