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/variables
Isso criará um arquivo chamado
/etc/variables
com o seguinte conteúdo:var1='foo' var2='bar'
-
Edite o
/etc/bash.bashrc
para 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.