Como o bash interpreta os operadores de controle

0

Para executar o programa Rust com um backtrace, deve-se configurar a variável de ambiente RUST_BACKTRACE para uma e executar o programa, então meu primeiro palpite como usuário bash inexperiente foi:

$ RUST_BACKTRACE=1 && cargo run
...
note: Run with 'RUST_BACKTRACE=1' for a backtrace.

mas não há backtrace na saída. Então, vamos verificar se a variável está definida:

RUST_BACKTRACE=1 && echo $RUST_BACKTRACE && cargo run
1
...
note: Run with 'RUST_BACKTRACE=1' for a backtrace.

e finalmente a solução de trabalho seria:

RUST_BACKTRACE=1 cargo run

Por favor, explique-me como funciona.

    
por gasabr 25.03.2018 / 10:54

1 resposta

3

Existem duas possibilidades de como um programa externo vê essa variável em seu ambiente:

exporte-o para esse comando

RUST_BACKTRACE=1 cargo run

Neste caso, a variável não faz parte do shell. Se foi antes, o seu valor não é alterado.

exporte-o

O shell não exporta automaticamente todas as suas variáveis para os programas que executa (nem todas as variáveis de shell são planejadas como parte de um ambiente).

  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
    
por 25.03.2018 / 11:22