bash 如何解释控制运算符

bash 如何解释控制运算符

要使用回溯运行 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 变量都旨在作为环境的一部分)。

  1. export RUST_BACKTRACE=1
    # or
    declare -x RUST_BACKTRACE=1
    cargo run
    
  2. RUST_BACKTRACE=1
    export RUST_BACKTRACE
    # or
    declare -x RUST_BACKTRACE
    cargo run
    
  3. set -a # Each  variable  or  function that is created or modified is given the export attribute
    RUST_BACKTRACE=1
    cargo run
    

相关内容