Posso criar uma variável shell acessível em todo o sistema?

0

Estou escrevendo um script que requer armazenar o valor de uma variável. Este valor será usado na próxima vez que o script for executado. Primeiro pensei em armazená-lo em um arquivo. Então essa ideia maluca veio em minha mente. Posso fazer uma variável de tal forma que se eu armazenar um valor nela, fechar o terminal e abrir outro, o valor ainda está lá?

Posso fazer uma variável shell totalmente global, como acessível em qualquer lugar?

    
por daltonfury42 17.07.2015 / 15:10

1 resposta

2

Não há "espaço variável de ambiente global". Se você quiser tornar seus dados persistentes , então você precisa armazená-los em algum arquivo. Exemplo:

#!/bin/sh
# Path to the persistent storage file
file=~/name.txt

# If the persistent file exists, use its contents as name
if [ -e "$file" ]; then
    name=$(cat "$file")
else
    # Use a default value otherwise
    name="Bob"
fi

echo "Your name was: $name"
echo "What is your name?"
read new_name

# If a new (non-empty) name is given, save it to the file
if [ -n "$new_name" ]; then
    echo "$new_name" > "$file"
fi

Se você quiser disponibilizar uma variável para cada novo processo, poderá colocá-la em /etc/environment (requer privilégios de root) ou ~/.profile . Depois de colocá-lo nessas variáveis, você geralmente precisa fazer o login novamente. A menos que seja absolutamente necessário, eu recomendo contra essa abordagem. Ele coloca o conteúdo na memória de todo (novo) processo, por isso não é adequado para armazenar senhas ou valores grandes.

% bl0ck_qu0te%

Bem, se você quiser apenas expor os valores a sessões de shell interativas , poderá colocá-lo em ~/.bashrc . Experimente, anexe echo "Hello $USER" ao arquivo. Ele será executado toda vez que você abrir um novo shell. Não será executado para logins gráficos e tal devido a uma linha como:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
    
por Lekensteyn 17.07.2015 / 15:17