Uma solução simples pode ser ter essas variáveis configuradas em um arquivo, tornando esse arquivo mundial gravável e obtendo-o de /etc/bash.bashrc . Dessa forma, as variáveis estariam disponíveis para todos os usuários, qualquer alteração no arquivo originado seria mantida após a reinicialização e também estaria disponível para quaisquer novos shells iniciados. Observe que quaisquer shells abertos não terão seus valores atualizados.
-
Crie o arquivo com as definições de variáveis e torne-o legível em todo o mundo
printf "%s=%s\n%s=%s\n" "var1='foo'" "var2='bar'" | sudo tee /etc/variables sudo chmod a+w /etc/variablesIsso criará um arquivo chamado
/etc/variablescom o seguinte conteúdo:var1='foo' var2='bar' -
Edite o
/etc/bash.bashrcpara torná-lo a fonte desse arquivosudo printf "\n## Source global variables\n. /etc/variables\n" | sudo tee -a /etc/bash.bashrc
Agora, quaisquer alterações nesse arquivo serão refletidas em quaisquer novos shells interativos que não sejam de login.
Se você precisar que isso seja imediatamente herdado até mesmo por shells abertos, você pode usar a variável PROMPT_COMMAND do bash:
PROMPT_COMMAND
If set, the value is executed as a command prior to issuing each
primary prompt.
Edite /etc/profile e adicione esta linha:
PROMPT_COMMAND='. /etc/variables'
Depois de fazer isso, todas as alterações no arquivo /etc/variables estarão imediatamente disponíveis para todos os shells, pois o arquivo será originado antes que todos os avisos sejam exibidos. Observe que isso só terá efeito depois que os usuários fizerem login novamente, já que precisarão ler /etc/profile novamente.