zsh - diferencia entre fonte ~ / .zshrc e shell lendo inicialmente .zshrc

4

Existe um comando ou variável de ambiente que eu possa testar no meu ~/.zshrc que diferenciaria quando eu executar source ~/.zshrc para atualizar minha configuração e quando o shell ler ~/.zshrc quando for inicializado?

Até agora, minha solução é definir uma variável no final de ~/.zshrc e testar essa variável na execução subseqüente, mas estou curioso para saber se existe uma maneira mais clara de obter essas informações diretamente do sistema ou do ambiente. do que cortá-lo de uma maneira que pareça tão frágil ...

# somewhere in ~/.zshrc

if [[ -n $CONSOLE_ALREADY_RUNNING ]]; then
    echo "we've alredy loaded ~/.zshrc"
    echo "so you must be sourcing it"
fi

# many more lines of ~/.zshrc commands

# last line of ~/.zshrc
export CONSOLE_ALREADY_RUNNING=1

Parece que deve haver uma maneira mais clara de testar se estou apenas recarregando via source /.zshrc ou se .zshrc está sendo executado para uma nova instância de zsh que acabou de ser carregada na memória.

    
por Ryan Erwin 05.12.2016 / 16:06

1 resposta

4

$ZSH_EVAL_CONTEXT is "toplevel" se você chamar o script de um shell. (por exemplo ./script ) $ZSH_EVAL_CONTEXT é "toplevel:file" se você fornecer o script. (por exemplo source script ) $ZSH_EVAL_CONTEXT é "file" se for executado automaticamente como uma configuração de tempo de execução. (como ~/.zshrc seria.)

Encontrou a variável aqui .

    
por 05.12.2016 / 18:06