Para definir variáveis globais, pode haver várias abordagens, dependendo dos shells dos usuários, e se o sistema suporta ou não um banco de dados de recursos login.conf
ou similar, que deve ser aplicado, independentemente do shell do usuário.
A abordagem mais simples é adicionar as definições desejadas aos arquivos de sistema relevantes em /etc
. Dependendo dos shells usados no sistema, você pode configurar e gerenciar vários arquivos. Por exemplo, sh
e bash
provavelmente esperam encontrar /etc/profile
, zsh
procura /etc/zprofile
, enquanto csh
ou tcsh
procurarão algo diferente.
Se o seu sistema suportar o banco de dados de recursos, você só precisará modificar um arquivo e todas as configurações deverão ser aplicadas corretamente. No FreeBSD, por exemplo, você adicionaria sua definição de envar ao recurso setenv
para qualquer classe de usuário que precisar:
default:\
:setenv=BLOCKSIZE=K,FOO=BAR:\
:tc=default:
Reconstrua o banco de dados e, no próximo login, $FOO
deve ser definido.
Se você não tem login.conf
, pode haver um método diferente de configurar globalmente os ambientes dos usuários em seu sistema.
Para definir variáveis para um usuário específico, acho que você precisaria usar a primeira abordagem, em que testaria o valor da variável $USER
em uma instrução case
ou uma construção semelhante suportada pela concha particular . Por exemplo, isso deve funcionar em sh
e compatível:
case $USER in
root) FOO=ROOTBAR;;
*) FOO=USERBAR;;
esac
export FOO