要使用回溯运行 Rust 程序,应该将环境变量 RUST_BACKTRACE 设置为 1 并运行该程序,所以我作为没有经验的 bash 用户的第一个猜测是:
$ RUST_BACKTRACE=1 && cargo run
...
note: Run with `RUST_BACKTRACE=1` for a backtrace.
但输出中没有回溯。因此,让我们检查变量是否已设置:
RUST_BACKTRACE=1 && echo $RUST_BACKTRACE && cargo run
1
...
note: Run with `RUST_BACKTRACE=1` for a backtrace.
最后的工作解决方案是:
RUST_BACKTRACE=1 cargo run
请向我解释一下它是如何工作的。
答案1
外部程序如何在其环境中看到该变量有两种可能性:
为该命令导出它
RUST_BACKTRACE=1 cargo run
在这种情况下,变量不是 shell 的一部分。如果是之前,那么它的值不会改变。
导出它
shell 不会自动将其所有变量导出到它运行的程序(并非所有 shell 变量都旨在作为环境的一部分)。
export RUST_BACKTRACE=1 # or declare -x RUST_BACKTRACE=1 cargo run
RUST_BACKTRACE=1 export RUST_BACKTRACE # or declare -x RUST_BACKTRACE cargo run
set -a # Each variable or function that is created or modified is given the export attribute RUST_BACKTRACE=1 cargo run