Isto está a irritar-me. Vi várias sugestões (todas usando arquivos e sintaxe diferentes) e nenhuma delas funcionou.
Como posso definir uma variável de ambiente para um usuário específico? Eu estou no debian squeeze. Qual é a sintaxe exata que devo colocar no arquivo para fazer ABC = "123"?
Você tem que colocar a declaração nos arquivos de inicialização da sua concha:
Se você estiver usando bash, ash, ksh ou alguma outra concha ao estilo de Bourne, você pode adicionar
ABC="123"; exportar ABC
no seu arquivo .profile
(${HOME}/.profile
). Esta é a situação padrão na maioria das instalações Unix, e em particular no Debian.
Se sua shell de login é bash, você pode utilizar .bash_profile
(${HOME}/.bash_profile
) ou .bash_login
em seu lugar.
Note: Se algum desses arquivos existe e sua shell de login é bash, .profile
não é lido quando você faz login over ssh ou em um console de texto, mas ainda pode ser lido ao invés de .bash_profile
se você fizer login a partir da GUI. Além disso, se não houver .bash_profile
, então utilize .bashrc
.
Se você'tiver definido zsh como sua shell de login, utilize ~/.zprofile
em vez de ~/.profile
.
Se você estiver usando o tcsh, adicione
setenv ABC "123"
no arquivo .login
(${HOME}/.login
)
Este é um procedimento geral que você pode usar para praticamente qualquer concha. Em qualquer caso, você tem que saber com qual shell o usuário normalmente faria o login:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
Então você tem que descobrir quais os arquivos de pontos que esta concha normalmente leria:
man $shell
Um atalho que pode funcionar é listar aqueles arquivos de pontos que contêm o nome da concha:
ls ~/.*${shell}*
Se você quiser verificar se um dos arquivos é realmente lido durante o login, você pode simplesmente imprimir o nome do arquivo em cada um deles, por exemplo:
echo .bashrc
Ao fazer login, você deve então ver quais arquivos estão sendo lidos, e você pode decidir qual deles modificar. Cuidado para não tentar utilizar echo "$0"
ou similar, porque o valor de $0
depende de como a shell processa os arquivos de pontos, e pode ser enganoso.
Quando se trata de declarar a variável " permanentemente" note que isto só se estende à sessão. Não há como acessar o valor de uma variável sem uma sessão, portanto não tem significado fora de uma. Se você quer dizer "read-only", isso é dependente da shell, e em **Bash*** você pode usar:
declare -r VAR
se já tem um valor, ou
declare -r VAR=value
para a atribuir ao mesmo tempo. Nem todos os shells têm este recurso.
Para declarar uma variável na maioria das shells, você deve utilizar um nome de variável ([A-Za-z_][A-Za-z0-9_]*
), seguido por um sinal de igual (e não há espaços em torno do sinal de igual), depois um valor (de preferência citado a menos que o valor seja um simples [A-Za-z0-9_]+
). Por exemplo:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1
Usar exportação.
export ABC="123"
Para verificar se está...##39;s definido, use
env
e/ou
env | grep ABC
Para adicioná-lo permanentemente, adicione isto ao seu arquivo ~/.bashrc
.
export ABC="123"