/ / Como mantenho funções / variáveis ​​locais para o meu zshrc? - zsh, zshrc

Como mantenho funções / variáveis ​​locais para o meu zshrc? - zsh, zshrc

Qualquer variável que eu declarar na minha zshrc está disponível no shell como uma variável de ambiente. Eu não quero que isso aconteça.

Eu tentei colocar as variáveis ​​em uma função e defini-las como locais, mas, em seguida, a função está disponível fora do zshrc.

Como posso fazer isso o que acontece no meu zshrc fica no meu zshrc?

Respostas:

16 para resposta № 1

Eles estão disponíveis, mas não são exportados, portanto, os scripts iniciados a partir da linha de comando não recebem essas variáveis. Se seu .zshrc parece

function zshrc()
{
local VAR=1
# Do stuff
}
zshrc

e você nunca mais quer lançar zshrc função novamente você pode apenas fazer

unfunction zshrc

depois.


28 for answer № 2

Se você está usando uma versão recente do zsh, você pode usar uma função anônima:

function () {
local xyz=abc
# whatever
}

A função será executada automaticamente e depois descartada, ela existe apenas para fins de escopo.

Isso funciona para qualquer arquivo originadonão apenas zshrc.


5 para resposta № 3

Se você não acrescentar a palavra local para uma variável permanecerá até que você faça um dos seguintes:

  1. Abra uma nova janela de terminal.
  2. Corre exec zsh ou exec bash dependendo do seu shell. Isso apenas limpa suas variáveis ​​locais que não foram designadas com a palavra local.

Evite isso

method_name(){
a=11
echo $a
}

Exemplo correto

method_name(){
local a=11
echo $a
}

Esta variável é definida para o nome da função method_name e somente disponível dentro da função quando chamado (e não depois).

Se você quiser acesso direto a essa variável local, pode configurá-la dessa maneira

local z=11

E chame assim

echo $z

Dependendo do seu shell e necessidades, você pode usar .bash_profile ou .bashrc ou .zshrc etc. para armazenar funções e aliases.

Veja esta referência para mais informações sobre variáveis ​​de ambiente e seus respectivos shells

Também leia isto para entender como definir variáveis ​​de ambiente na linha de comando usando expansões de shell

Você pode visualizar rapidamente variáveis ​​de ambiente com env ou printenv

A convenção é usar o UPPERCASE

Para definir temporariamente uma variável de ambiente (armazenada até você fechar o terminal)

export A=11 ou export B="11 is part of this string"

Supondo que você abriu uma nova janela de terminal ouSe você usar o .zshrc ou .bashrc ou o que estiver usando, poderá usar essa variável de ambiente até fechar a sessão do terminal. Nota: não use $ quando estiver configurando, mas use $ quando fizer referência à variável.

Exemplos

echo "A is equal to: $A and that is pretty nice"

echo "$A"

Como criar um arquivo?

source ~/path/to/file/filename

Exemplo

source ~/.bash_profile

Para definir uma variável de ambiente (até você removê-lo ou configurá-lo novamente)

Use o código acima, mas coloque-o em seu ~ / .bash_profile ou ~ / .zshrc ou outro arquivo correspondente. Salve o arquivo e forneça-o.

Exemplo

export B="11 is part of this string"

Agora você pode visualizá-lo com

env

Para remover essa variável de ambiente, remova-a do arquivo e, novamente, crie o arquivo.

Para remover temporariamente uma variável ambiental, use unset

Exemplo

unset B

Note que não há $ quando desarmar.

Para definir variáveis ​​de ambiente na linha de comando

export BLABLA="environment variable set from the command line, saved in file for later use"

Verifique o arquivo para o qual você está enviando, ele pode não iniciar em uma nova linha, ele pode ter sido concatenado para sua última linha que era alguma outra função, alias ou outro.

Esta não é uma resposta totalmente abrangente, mas é um grande passo na direção certa. Ele mostra como o escopo de um shell de terminal pode ser definido, usado e removido.