Isso está me irritando. Eu vi várias sugestões (todas usando arquivos e sintaxe diferentes) e nenhuma delas funcionou.
Como faço para definir uma variável de ambiente para um usuário específico? Estou no debian squeeze. Qual é a sintaxe exata que devo colocar no arquivo para criar ABC = "123"?
environment-variables
path
Gilles
fonte
fonte
.bashrc
é o principal lugar para isso..bash_profile
contém algo parecido[[ -f ~/.bashrc ]] && . ~/.bashrc
.Respostas:
Você precisa colocar a declaração nos arquivos de inicialização do seu shell:
Se você estiver usando bash, ash, ksh ou algum outro shell no estilo Bourne, poderá adicionar
no seu
.profile
arquivo (${HOME}/.profile
). Esta é a situação padrão na maioria das instalações Unix, e em particular no Debian.Se o seu shell de login for bash, você pode usar
.bash_profile
(${HOME}/.bash_profile
) ou.bash_login
então.Nota: Se um desses arquivos existir e seu shell de logon for bash, ele
.profile
não será lido quando você efetuar logon no ssh ou em um console de texto, mas ainda poderá ser lido em vez de.bash_profile
se você efetuar login na GUI. Além disso, se não houver.bash_profile
, use.bashrc
.Se você definiu o zsh como seu shell de login, use em
~/.zprofile
vez de~/.profile
.Se você estiver usando o tcsh, adicione
no
.login
arquivo (${HOME}/.login
)se você estiver usando outro shell, consulte o manual do shell como definir variáveis de ambiente e quais arquivos são executados na inicialização do shell.
fonte
su user
é alterar a propriedade do shell atual para o nome do usuário arg, mantendo o diretório inicial e o ambiente do usuário que está chamando. Para entrar no shell de forma a se tornar o novo usuário e obter todas as suas configurações ambientais ($ PATH, $ HOME, $ ABC, etc), você precisa passar um - como o primeiro argumento a su.su - username
realizará o que você está pedindo.man su
)su
em primeiro lugar? Você não acabou de criar uma propriedade de raiz.profile
que não pode ser usada pelo usuário?.profile
é lido por todos os shells compatíveis com Bourne, você não deve escrever a sintaxe do Bash nesse arquivo. Em particular,export VARIABLE=value
precisa ser refatorado paraVARIABLE=value; export VARIABLE
.Use o
/etc/environment
arquivo para definir as variáveis de ambiente. Em seguida, adicione a seguinte linha dentro do/etc/environment
arquivo.Agora a variável ABC estará acessível em todas as sessões do usuário. Para testar a saída da variável, atualize primeiro a variável de ambiente usando o comando
e corra
echo $ABC
.fonte
/etc/environment
não suportar a sintaxe completa do bash, algo que eu descobri da maneira mais difícil. Por exemplo, colocarPATH="/usr/bin:/usr/sbin"
e fazerPATH="$PATH:/foo/bar"
na linha a seguir não funcionará #/etc/environment
, mesmo se eu reiniciei o terminal bash ou digiteisource /etc/environment
. Portanto, se você estiver tendo problemas em que a variável de ambiente não está se perpetuando, tente reiniciar.Este é um procedimento geral que você pode usar para praticamente qualquer shell. De qualquer forma, você precisa saber em qual shell o usuário normalmente efetuaria login:
Então você precisa descobrir quais arquivos de ponto esse shell normalmente lê:
Um atalho que pode funcionar é listar os arquivos de ponto que contêm o nome do shell:
Se você deseja verificar se um dos arquivos é realmente lido durante o login, basta imprimir o nome do arquivo em cada um deles, por exemplo:
Ao fazer login, você deve ver quais arquivos estão sendo lidos e pode decidir qual deles modificar. Cuidado para não tentar usar algo
echo "$0"
semelhante, pois o valor de$0
depende de como o shell processa arquivos de ponto e pode ser enganoso.Quando se trata de declarar a variável "permanentemente", observe que isso se estende apenas à sessão. Não há como acessar o valor de uma variável sem uma sessão, portanto, ela não tem significado fora de uma. Se você quer dizer "somente leitura", isso depende do shell e no Bash você pode usar:
se já tiver um valor, ou
atribuí-lo ao mesmo tempo. Nem todas as conchas têm esse recurso.
Para declarar uma variável na maioria dos shells, use um nome de variável (
[A-Za-z_][A-Za-z0-9_]*
), seguido por um sinal de igual (e sem espaços ao redor do sinal de igual), depois um valor (de preferência citado, a menos que o valor seja simples[A-Za-z0-9_]+
). Por exemplo:fonte
Use exportação.
Para verificar se está definido, use
e / ou
Para adicioná-lo permanentemente, adicione-o ao seu
~/.bashrc
arquivo.fonte
permenate
e nãopermenently
: Dbashrc
permenate
? você quer dizerpermanent
?O comando exato é:
fonte
~/.profile
e (b) permite espaço antes e depois=
?A melhor maneira que funcionou para mim é modificar o arquivo .bashrc no shell BASH.
use isto por exemplo:
adicione esta linha:
por exemplo :
export HOME = "/home/user/"
Lembre-se de usar,
""
pois o uso' '
não funcionará e seu arquivo bashrc relatará erros durante a fonte.origine-o na sessão atual.
Também tentei modificar o arquivo / etc / environment, mas ele não me permitiu criar uma nova variável de ambiente e, quando a originou, solicitou o erro de que a variável definida não foi encontrada.
fonte