Você pode fazer isso simplesmente declarando-o como novo na linha de comando ou declarando-o novamente. Por exemplo, se você deseja adicionar ~/testfolder
à sua variável de caminho, basta inseri-la no seu terminal atual (este é apenas um exemplo):
PATH="$HOME/testfolder:$PATH"
Obviamente, isso só será alterado durante o tempo em que a sessão do terminal estiver aberta. Observe o $
uso aqui, você o deixa de fora para declaração, mas se quiser exibi-lo, precisará adicioná-lo $
para expandir seu conteúdo.
Se você deseja declará-las mais duradouras e gerais, pode adicioná-las ao seu ~/.bashrc
arquivo (somente para você) ou em /etc/bash.bashrc
(todo o sistema), por exemplo, se desejar que contem apenas para você ou para todos os usuários. Outra opção é adicioná-lo ao seu .profile
arquivo (somente para você), onde será viável a partir do momento em que você efetuar login. Você pode fazer isso echo
por exemplo, se tiver certeza de que essa variável ainda não está definida ou se você criar novas. (apenas um exemplo):
echo "variable=value" >> /path/filename
Se no entanto quiser editar um arquivo fora do seu diretório de usuário que é o caso quando você quer editar /etc/bash.bashrc
você precisa usar sudo
e assim você não pode simplesmente usar um 'aqui documento' uma vez que este não iria funcionar, em vez usar, em seguida, uma linha como a seguir:
echo "variable=value" | sudo tee -a /path/filename
Se a variável já existir, você pode alterá-la com o sed
comando (também apenas um exemplo):
sed -i.bak 's/variable=value/variable=new-value/' /path/filename
Isso editará a variável no arquivo, mas criará um backup dela antes da edição. Se você alterar arquivos fora do diretório de usuários com o sed, precisará usar sudo
na maioria dos casos, para que a linha seja:
sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename
A remoção de uma variável de um arquivo também pode ser feita sed
, basta deixar a segunda parte do regex vazia:
sed -i.bak 's/variable=value//' /path/filename
Se você estiver interessado em quais variáveis de ambiente estão definidas, use o env
comando para listá-las, ( set -o posix ; set ) | less
ou sh -c set
. Todos os três fornecem várias quantidades de saída, ( set -o posix ; set ) | less
devolvendo a maioria das variáveis que estão realmente definidas.
( set -o posix ; set )
é mais fácil dizersh -c set
. Isso funcionará mesmo quesh
seja um link simbólico parabash
(que normalmente não está nas versões modernas do Ubuntu).sh -c set
não mostra realmente todas as variáveis de ambiente definidas no sistema. No entanto, vou incluí-lo como uma terceira maneira de mostrar alguns deles.sh -c set
mostra todas as variáveis de ambiente . Ele simplesmente não mostra variáveis de shell do shell de chamada, mas nunca são herdadas por um processo executado a partir desse shell, a menos que vocêexport
as faça./etc/environment
? Parece que isso é um atalho para confusão.Não existe um equivalente direto de
setx /m
, mas existem maneiras de realizar o quesetx /m
faz.setx /m
putsvariable=value
emHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
. Não- / m (ou seja, por utilizador)setx
simplesmente coloca ovariable=value
emHKCU\Environment
.Você pediu especificamente para 'todo o sistema'. Para isso, você adicionaria o par de valor variável a
/etc/environment
OR para/etc/profile.d/<yourfile>
. O primeiro é avaliado por pam, enquanto o último é avaliado por/bin/sh
. Assim, em/etc/profile.d/<yourfile>
, você adicionariavariable=value; export variable
. (o bash também permiteexport variable=value
). Para/etc/environment
você adicionarvariable=value
.Os equivalentes por usuário são
~/.pam_environment
e~/.profile
.Veja também: https://help.ubuntu.com/community/EnvironmentVariables
fonte
Você pode exportar variáveis de ambiente na linha de comandos, mas isso não afetará o ambiente efetivo nos processos já iniciados, apenas no processo atual e em seus subprocessos. Portanto, na prática, você geralmente precisa se conectar novamente ao alterar variáveis de ambiente.
fonte