无法访问 Rust 中的环境变量

Can't access environment variable in Rust

该段代码如下:

// Log in to Discord using a bot token from the environment                  
let discord = Discord::from_bot_token(                                       
    &env::var("DISCORD_TOKEN").unwrap()                                      
).expect("login failed");

我收到一条错误消息,提示无法找到环境变量 DISCORD_TOKEN

我的环境确实显示变量:

myawesomename$env | grep DISCORD
DISCORD_TOKEN=you'llneverknow

如果我打印 Rust 知道的所有键和值:

for (key, value) in env::vars() {                                            
    println!("{}: {}", key, value);                                      
}

不显示环境变量。

类似地,当我执行 env | grep CARGO 时,none 的 CARGO 变量存在,但它们打印在 Rust 代码中。

对于 Rust 正在查看的 profile/system env 变量,我根本不了解(我假设是启动进程的环境中的变量)。

更新:我不知道我改变了什么,但它现在有效了。很抱歉打扰了大家的时间。谢谢你帮我调查一下。

取消删除这个问题,因为我得到了答案。但这是因为我在问问题之前没有检查所有因素。

在我运行cargo run时有效,但在运行sudo cargo run时无效。我在 sudo 中 运行 因为我试图读取另一个进程的内存。 sudo 配置文件有自己的一组环境变量,它会在执行 sudo 之前重置环境。

为了解决这个问题,我 运行 sudo visudo 并插入了这一行

Defaults env_keep += "DISCORD_TOKEN'

从那里开始,它奏效了。

This link 找到答案了。