无法访问 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 找到答案了。
该段代码如下:
// 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 找到答案了。