Na computação , as variáveis de ambiente são variáveis dinâmicas usadas pelos vários processos de um sistema operacional ( Windows , Unix, etc.). Eles são usados para comunicar informações entre programas que não estão na mesma linha hierárquica e que, portanto, precisam de uma convenção para comunicar suas escolhas entre si.
Também falamos sobre variáveis de ambiente CGI para um servidor HTTP .
O comando SET sem nenhum parâmetro permite que você liste a maioria das variáveis de ambiente.
As variáveis % ERRORLEVEL%,% DATE%,% TIME%,% CD%,% RANDOM% não são exibidas pelo comando SET (Nota: o papel dessas variáveis é explicado nos parágrafos a seguir).
Para modificar uma variável de ambiente, você deve inserir este comando no prompt de comando :
SET PATH=%PATH%;c:\WINDOWS\System32\wbemCuidado, isso só funciona no processo atual.
Para alterar uma variável de ambiente permanentemente:
Para modificar uma variável de ambiente, você deve inserir:
PATH=$PATH:./Cuidado, isso só funciona no processo atual.
Para modificar permanentemente uma variável de ambiente, você pode adicionar uma linha ao seu arquivo de inicialização do shell ( ~ / .bashrc para Bash , ~ / .zshrc para Zsh )) para atribuir e exportar a variável. Aqui está um exemplo mínimo de ~ / .bashrc :
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions export LANG=fr_CA.UTF8O script de iniciação do shell é pessoal para o usuário.
Ele é executado cada vez que nos conectamos (diretamente ou por ssh) e cada vez que abrimos um novo console.
Para que a atribuição da variável beneficie todos os usuários, ela pode ser adicionada (desde que você tenha os direitos) no arquivo de inicialização global do shell ( / etc / profile para Bash).
Indica o diretório do perfil comum a todos os usuários.
Valores de exemplo:
C:\ProgramData ou C:\Documents and Settings\All UsersTenha cuidado para não confundir com o perfil padrão:
C:\Documents and Settings\Default User % DADOS DO APLICATIVO%Contém os dados do aplicativo do usuário conectado.
Valores de exemplo:
C:\Users\Wikipedia\AppData\Roaming ou C:\Documents and Settings\Wikipedia\Application Data % HOMEPATH%Valores de exemplo:
\Users\Wikipedia ou \Documents and Settings\Wikipedia % NOME DO USUÁRIO%% USERNAME% contém o nome do usuário conectado (exemplo: Wikipedia).
% PERFIL DE USUÁRIO%% USERPROFILE% indica o caminho do diretório que contém a seção HKEY_CURRENT_USER do usuário conectado (arquivos NTUSER.DAT e NTUSER.INI).
A variável% CD% não é exibida pelo comando SET ; fornece o caminho de acesso do diretório atual.
Contém o nome do computador.
Veja as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .
As variáveis% DATE% e% TIME% não são exibidas pelo comando SET ; eles fornecem a data e hora atuais do computador.
A variável% ERRORLEVEL% não é exibida pelo comando SET ; fornece o código de erro do último comando executado (0 ou 1). Isso é equivalente à variável $? do Unix.
É um comando essencial para criar um shell sofisticado no Windows (arquivos de comando: extensão .bat ).
Aqui estão dois exemplos de código:
IF ERRORLEVEL 2 GOTO no_such_file IF %ERRORLEVEL% EQU 2 SET CODE_ERREUR=2Veja as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .
Valor padrão :
C:Se o usuário estiver conectado a um domínio ,% LOGONSERVER% indica o nome do controlador de domínio usado para autenticação, precedido por "\\". Exemplo:
\\controle_domaine % USERDOMAIN% indica o nome do grupo de trabalho ou domínio do Windows ao qual o usuário atual pertence.Se o usuário estiver conectado a um grupo de trabalho,% LOGONSERVER% indica o mesmo que% COMPUTERNAME%, precedido por "\\". Exemplo:
\\PC_WikipediaVeja as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .
Veja as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .
Veja as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .
Para as variáveis % PROCESSOR_ARCHITECTURE%,% PROCESSOR_IDENTIFIER%,% PROCESSOR_LEVEL% e% PROCESSOR_REVISION%, consulte as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .
Esta variável de ambiente indica o caminho do diretório de programas instalados do Windows (ver Arquivos de Programas ).
Seu valor padrão é:
C:\Program FilesO valor desta variável é configurado, no registro, pela variável ProgramFilesDir na chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion.
Esta variável de ambiente especifica o caminho para o diretório de programas x86 instalados no Windows de 64 bits (consulte Arquivos de programas ).
Seu valor padrão é:
C:\Program Files (x86)Esta variável de ambiente é usada para personalizar o prompt exibido antes de inserir um comando.
Seu valor padrão é:
$P$GEle pode conter texto de exibição combinado com valores especiais cujo código começa com o cifrão "$".
Codificado | Descrição |
---|---|
$ P | Caminho atual ( P ath ) |
$ N | Leitor atual apenas |
$ G | Caráter Superior ">" ( G reater ) |
$ L | Caráter inferior "<" ( L ess ) |
$ D | Data actual ( D comeu ) |
$ T | Hora atual ( T ime ) |
A variável% RANDOM% não é exibida pelo comando SET ; gera um número pseudo aleatório entre 0 e o 15 ° potência de 2 (32768).
Esta variável indica a letra da unidade onde o Windows está instalado.
Seu valor padrão é:
C:Esta variável de ambiente indica a localização dos arquivos do sistema.
Ele é configurado pelo registro: valor SystemRoot na chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion.
Valores padrãoO padrão é:
De % SystemRoot% , outras variáveis de ambiente podem ser definidas. Para% PATH % , % COMSPEC% , % TEMP% , % TMP% , % WINDIR% , consulte Variáveis de ambiente criadas pelo gerenciador de sessão .
% TMP% e% TEMP%. Uma pasta de arquivos temporários também está localizada no seguinte diretório ( Windows XP ):
C: \ Documents and Settings \ session_name \ Local Settings \ Temp
Semelhante a% SystemRoot%
Exemplo:
C:\WindowsNo Unix (ou GNU / Linux), os shells usam dois tipos de variáveis, usando a mesma sintaxe:
Elas são acessadas como variáveis locais e devem ser exportadas com o comando export (para bash ) ou use o comando setenv (csh).
Exemplo de variáveis de ambiente em Unix:
Veja CFLAGS
Infopath é uma variável de ambiente usada pelo Editor de Texto Emacs . Ele contém a lista de diretórios de informações.
A variável $ LANG é usada por vários programas para determinar o idioma das mensagens a serem exibidas. Por exemplo :
$ LANG=fr ls fff ls: fff: Aucun fichier ou répertoire de ce type $ LANG=en ls fff ls: fff: No such file or directoryEssas diferentes traduções podem ser encontradas nos arquivos .mo nos subdiretórios / usr / share / locale .
Pode ser interessante modificar esta variável para obter uma mensagem de erro em inglês (por exemplo, executando o comando " export LANG=C "), então para procurar por esta mensagem de erro com um motor de busca o interesse é ter uma lista de páginas maior que para a mensagem de erro em francês e na esperança de encontrar um diagnóstico mais preciso.
Exibindo o editor de texto vimA variável $ LANG também é usada pelo vim para determinar a codificação a ser usada. Suponha que o arquivo .txt contenha apenas a linha "verão" codificada em UTF-8 . Para editar este arquivo com o vim no console, você deve definir "export LANG = fr.UTF8" e certificar-se de que a codificação do console está definida como UTF-8 (Configuração → Codificação).
Se a codificação do console estiver configurada para ISO / IEC 8859-1 , o vim exibirá "verão". Se a variável $ LANG não especificar a codificação UTF-8 , por exemplo $ LANG = fr, mas a codificação do console for UTF-8, o vim exibirá "verão", mas a posição do cursor não será adequada. De fato, embora o console exiba três caracteres, o vim conta cinco (ir para o final da linha com "$" colocará o cursor muito longe).
Comparação com WindowsNo Windows, o idioma é definido com o registro, no HKEY_CURRENT_USER, mais exatamente em algumas das subchaves do ControlPanel \ international (a ferramenta para defini-lo é intl.cpl ).
A variável $ LD_LIBRARY_PATH contém uma lista de diretórios, separados por:, onde estão localizadas as bibliotecas que não estão instaladas nos diretórios padrão (/ usr / lib e / usr / local / lib não precisam ser especificados em $ LD_LIBRARY_PATH).
Ao executar um aplicativo vinculado dinamicamente a uma biblioteca, a biblioteca é pesquisada primeiro nos diretórios padrão e, em seguida, nos diretórios listados na variável $ LD_LIBRARY_PATH em ordem de aparecimento.
Se a biblioteca não for encontrada, uma mensagem de erro semelhante à seguinte será lançada no tempo de execução:
le_nom_du_binaire: error while loading shared libraries: libXX.so.0: cannot open shared object file: No such file or directoryValor de exemplo:
:0.0Valor de exemplo:
xtermValor de exemplo
gnome-terminal $ DESKTOP_SESSIONValor de exemplo:
default $ DESKTOP_STARTUP_IDExemplo de valor no ambiente de um script /home/demo/Bureau/getenv.sh lançado pelo SpaceFM como gerenciador de desktop em LXDE :
DESKTOP_STARTUP_ID = spacefm / | home | demo | Desktop | getenv.sh/3459- 2-debian7_TIME740137
GTK + usa esta variável de ambiente no contexto da notificação de início do aplicativo. De acordo com as especificações oficiais, a aplicação GTK + deve destruir esta variável de ambiente após a sua leitura, para não repassá-la aos seus processos filhos.
Quando o programa /home/demo/Bureau/getenv.sh no exemplo citado acima é iniciado automaticamente no logon por meio de um arquivo .desktop no diretório $ HOME / .config / autostart , ou quando é executado a partir de um emulador de terminal gráfico, então seu ambiente não contém essa variável.
$ GDM_XSERVER_LOCATION e $ GDMSESSIONVeja GNOME Display Manager .
$ GNOME_DESKTOP_SESSIONValor de exemplo:
Default $ GNOME_KEYRING_SOCKETValor de exemplo:
/tmp/keyring-24TGGU/socketVeja i18n .
Se a variável de ambiente $ POSIXLY_CORRECT for definida, os comandos GNU / Linux estarão em conformidade com o padrão POSIX .
Por exemplo, GNU grep será compatível com POSIX.2 se esta variável for definida.
Consulte a variável de ambiente POSIX # POSIXLY CORRECT .
Contém o valor do nome de usuário da sessão atual.
$ SHELL indica o interpretador de shell usado por padrão. O valor normal do Linux é / bin / bash (mais raramente / bin / sh ).
Para a lista de shell no Unix, consulte a categoria: Shell Unix .
Para variáveis internas, consulte (em) Variáveis internas .
Existem variáveis que não fazem parte das variáveis de ambiente. Por exemplo, pode haver:
A variável <PATH> contém a lista de diretórios nos quais os arquivos executáveis serão pesquisados . Esta variável é encontrada no Windows (% PATH%) e no Unix e Linux ($ PATH).
ExemploVocê vai para qualquer diretório em seu sistema (por meio do comando cd ).
Se você tentar digitar wikipedia.exe no console (ou terminal), ele não será executado porque / opt / wikipedia / bin não está no PATH .
Por outro lado, se você digitar / opt / wikipedia / bin / exfile , funcionará, mas leva muito tempo para escrever.
Portanto, é necessário ajustar a variável de ambiente PATH.
Em Unix / Linux: $ PATHNo Unix e no Linux, esta variável é usada apenas para a localização de executáveis (binário ou script de shell). Para bibliotecas de software , outras variáveis são usadas (exemplo: $ LD_LIBRARY_PATH).
Veja o $ PATH echo $PATHVocê também pode usar o comando:
printenv PATH Separador de $ PATH: ":"O separador são os dois pontos (:).
Modifique temporariamente o $ PATHCom a concha bash
export PATH=$PATH:/opt/toto/binEsta modificação é apenas temporária (para a sessão atual).
Altere o $ PATH permanentementeVocê deve, portanto, tornar a modificação de PATH permanente, colocando a seguinte linha em ~ /. bashrc .
export PATH=$PATH:/opt/toto/bin A armadilha do diretório atualNo Unix , para executar um arquivo que está no diretório atual, você geralmente é obrigado a prefixar o comando com "./", que permite indicar que o arquivo está no diretório atual.
Esta peculiaridade surpreende os usuários que estão acostumados com o Windows (ou o antigo MS-DOS ) onde você pode chamar diretamente um programa que está no diretório atual.
Esta é uma medida de segurança. Por exemplo, se um intruso malicioso conseguir colocar um programa malicioso chamado ls no diretório atual, este programa será executado assim que você quiser listar o diretório (em vez do comando ls normalmente encontrado no diretório / bin /). , que está no PATH, mas que só pode ser modificado pelo administrador do sistema ).
Se apesar de tudo o usuário deseja encontrar esta "ergonomia" da Microsoft, deve adicionar o caminho "./" em seu CAMINHO:
PATH=$PATH;./Essa medida de segurança foi reintroduzida no PowerShell incluído no Windows a partir da versão 7; para executar um arquivo executável na pasta atual, o usuário deve precedê-lo com ". \".
O $ PATH básico no perfilO valor base de $ PATH, para todos os logins, é definido no perfil: Arquivo shell / etc / profile .
No Mac OS X Veja o $ PATH(Em shell Bourne )
echo $PATH Separador de $ PATH: ":"O separador são os dois pontos (:).
Modifique temporariamente o $ PATH export PATH="$PATH:/opt/toto/bin"Esta modificação é apenas temporária (para a sessão atual).
Altere o $ PATH permanentementeVocê deve tornar a modificação de PATH permanente adicionando a seguinte linha no perfil do usuário (ou seja, o shell ~ / .profile ou ~ / .bash_profile dependendo do tipo de terminal que você está usando).
export PATH="$PATH:/opt/toto/bin"Também é possível modificar diretamente o PATH do arquivo / etc / profile (você deve usar sudo ou ser root ).
No Windows:% PATH%No Windows, se um executável não estiver no local padrão, a variável% PATH% indica em quais diretórios procurá-lo.
Esta variável é definida através do registro , na configuração do Session Manager (SMSS.EXE) (a localização exata é: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATH)
Veja o% PATH%No prompt de comando, digite o comando:
SET pathou
ECHO %PATH% Separador de% PATH%: ponto e vírgulaO separador é o caractere ponto-e-vírgula: "; "
Modificar temporariamente% PATH%No prompt de comando, digite o comando:
SET PATH=%PATH%;c:\opt\wikipedia\binEssa alteração é apenas temporária (para o prompt de comando atual).
Alterar% PATH% permanentementeTrês maneiras são possíveis:
1- Você deve modificar a variável de ambiente PATH em Painel de controle> Sistema> Avançado> Variáveis de ambiente> Variáveis do sistema: Caminho da variável ⇒ Modificar. Exemplo: add; C: \ Batch para indicar que o Windows deve procurar no diretório C: \ Batch para encontrar um aplicativo ou um arquivo .bat.
2- Use um comando MS-DOS (que é mais conveniente para uso em um script), baseado em setx
Aqui está um exemplo de uso: O objetivo é adicionar C: \ Wikipedia \ bin à variável de ambiente PATH permanentemente. SETX "%PATH%;C:\Wikipedia\bin"3- Use um comando do MS-DOS (que é mais conveniente para uso em um script), que modifica o registro.
Aqui está um exemplo de uso: O objetivo é adicionar C: \ Lotus \ Notes à variável de ambiente PATH permanentemente. REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "%PATH%;C:\Lotus\Notes" /f Opções REG ADD: / f (forçar): permite forçar a adição da chave de registro, sem exibir a confirmação; / v (valor): indica o nome do valor; / d (dados): indica o valor da chave. Nota: É necessário reiniciar a máquina para que o sistema leve em consideração a modificação realizada anteriormente.Esta variável de ambiente é definida apenas se o Java estiver instalado no computador correspondente.
JAVA_HOME indica o diretório que contém a estrutura em árvore dos arquivos necessários para a máquina virtual Java ( classe , bibliotecas de software , etc.). Consulte carregador de classes Java .
Para o caso específico do Windows, consulte as variáveis de ambiente definidas pelo gerenciador de sessão (smss.exe) .