Perguntas sobre
- configurando variáveis de ambiente
- a
PATH
são muito comuns aqui e, na maioria dos casos, as respostas são muito semelhantes umas às outras. No futuro, seria bom ter uma boa Q / A para isso.
Portanto, a pergunta é: o que são variáveis de ambiente, como o executável PATH
, e como posso alterá-las e usá-las nos principais sistemas operacionais?
Uma boa resposta incluiria uma explicação simples de quais variáveis de ambiente são especialmente importantes PATH
para o sistema operacional, bem como diretrizes simples sobre como configurá-las e lê-las adequadamente.
env
e as opções necessárias estão listadas.CMD
e digitandoset
ouPowerShell
digitandoGet-Childitem env:
.Respostas:
O que são variáveis de ambiente?
As variáveis de ambiente mantêm valores relacionados ao ambiente atual, como o sistema operacional ou as sessões do usuário.
Caminho
Um dos mais conhecidos é chamado
PATH
no Windows, Linux e Mac OS X. Ele especifica os diretórios nos quais os programas executáveis * estão localizados na máquina que podem ser iniciados sem conhecer e digitar todo o caminho do arquivo na linha de comando. . (Ou no Windows, a caixa de diálogo Executar no menu Iniciar ou + R).No Linux e Mac OS X, que normalmente mantém todos
bin
esbin
diretórios relevantes para o usuário atual. No Windows, ele contém pelo menos os diretóriosC:\Windows
eC:\Windows\system32
- é por isso que você pode executarcalc.exe
ounotepad.exe
na linha de comando ou na caixa de diálogo Executar , mas nãofirefox.exe
. (O Firefox está localizado emC:\Program Files\Mozilla Firefox
. Para obter informações sobre como incluir o Firefox, acesse aqui .)Por exemplo, digitar
calc
(.exe
pode ser omitido) na linha de comando do Windows iniciará a Calculadora do Windows.* Você pode adicionar suporte para extensões de arquivo que não sejam
.exe
editando%PATHEXT%
.De outros
Outras variáveis podem dizer aos programas que tipo de terminal é usado (
TERM
no Linux / Mac OS X) ou, no Windows, onde a pasta do Windows está localizada (por exemplo,%WINDIR%
éC:\Windows
).Criando novas variáveis de ambiente
No Windows, Linux e Unix, é possível criar novas variáveis de ambiente, cujos valores são disponibilizados para todos os programas após o lançamento.
Você pode usar isso ao escrever scripts ou programas instalados ou implementados em várias máquinas e precisa fazer referência a valores específicos para essas máquinas. Embora um efeito semelhante possa ser alcançado usando as definições de configuração específicas do programa, é mais fácil fazer isso usando uma variável de ambiente se vários programas precisarem acessar o mesmo valor.
janelas
GUI
Aberto
Control Panel » System » Advanced » Environment Variables
.Digite
control sysdm.cpl,,3
na caixa de diálogo Executar ( + R) e clique emEnvironment Variables
.Para editar variáveis de usuário, você também pode digitar
na caixa de diálogo Executar.
Clique com o botão direito do mouse em (Meu) Computador e clique em Propriedades, ou simplesmente pressione + Break.
Advanced » Environment Variables
.Advanced system settings » Environment Variables
.Existem muitas outras maneiras de chegar ao mesmo local, como digitar "variáveis de ambiente" na caixa de pesquisa Menu Iniciar / Tela e assim por diante.
As variáveis de ambiente no Windows são separadas em valores específicos de usuário e máquina / sistema. Você pode visualizar e editar seus valores lá. Seus valores atuais no lançamento são disponibilizados para todos os programas.
Há também o Rapid Environment Editor , que ajuda a definir e alterar variáveis de ambiente no Windows sem a necessidade de aprofundar as configurações do sistema. Outro programa de código aberto para Windows com o qual o ambiente do caminho pode ser editado de maneira muito conveniente é o Editor de Caminho .
Linha de comando
Formato
As variáveis de ambiente no Windows são indicadas com sinais de porcentagem (%) ao redor do nome:
eco
Para exibir o valor de uma variável de ambiente
cmd.exe
, digiteecho %name%
.conjunto
Para criar / definir uma variável, use
set varname=value
:Para acrescentar / adicionar uma variável, use
set varname=value;%varname%
:As variáveis de ambiente definidas dessa maneira estão disponíveis para (o restante) a duração do processo do Prompt de Comando em que estão definidas e estão disponíveis para processos iniciados após as variáveis terem sido definidas.
setx
Para criar / definir uma variável permanentemente , use
setx varname "value"
:Ao contrário
set
, não há sinal de igual e o valor deve ser colocado entre aspas se ele contiver espaços. Observe que as variáveis podem se expandir para uma sequência com espaços (por exemplo,%PATH%
torna-seC:\Program Files
); portanto, é melhor incluir aspas em torno dos valores que contêm quaisquer variáveis.Você deve adicionar manualmente
setx
às versões do Windows anteriores ao Vista.Ferramentas de suporte do Windows XP Service Pack 2
Lista de variáveis de ambiente do Windows
Aqui está uma lista de variáveis de ambiente padrão , que são incorporadas ao Windows. Alguns exemplos são:
%WINDIR%
,%SystemRoot%
,%USERPROFILE%
, e%APPDATA%
. Como a maioria dos nomes no Windows, eles não diferenciam maiúsculas de minúsculas.Derivados Unix (FreeBSD, GNU / Linux, OS X)
As variáveis de ambiente no Linux são prefixadas com um cifrão ($) como $ HOME ou $ HOSTNAME. Muitas variáveis conhecidas e padrão são escritas em maiúsculas para significar exatamente isso. Lembre-se de que os nomes das variáveis diferenciam maiúsculas de minúsculas, o que significa que $ User e $ USER não são totalmente relacionados do ponto de vista do shell.
Unix derivados definir variáveis globais do sistema em scripts casca localizada principalmente na
/etc
pasta, mas os valores específicos do utilizador pode ser dada a essas variáveis em scripts localizados na pasta de casa (por exemplo,/etc/profile
,$HOME/.bash_profile
). O.profile
arquivo na pasta inicial é um local comum para definir variáveis de usuário.Definindo variáveis
Esses arquivos são scripts de shell regulares e podem conter mais do que apenas declarações de variáveis de ambiente. Para definir uma variável de ambiente, use
export
. Para mostrar suas variáveis de ambiente definidas atualmente em um terminal, executeenv
.O
export
comando é uma maneira padrão de definir variáveis. A sintaxe é muito intuitiva. O resultado é idêntico para essas duas linhas, mas a primeira alternativa é preferível caso seja necessária portabilidade para o shell Bourne pré-POSIX.O shell C e seus descendentes usam uma sintaxe completamente diferente; lá, o comando é
setenv
.Consulte o projeto de documentação do Linux, Path HOWTO, para uma discussão mais aprofundada sobre este tópico.
Talvez contrário à crença comum, o OS X é mais "Unix" que o Linux. Além dos arquivos já mencionados, $ PATH pode ser modificado nestes arquivos:
/etc/paths
contém todos os diretórios padrão adicionados ao caminho, como/bin
e/usr/sbin
./etc/paths.d
- normalmente usado pelos instaladores para disponibilizar os arquivos executáveis que eles fornecem a partir do shell, sem tocar nos arquivos de configuração específicos do usuário ou do sistema. Esses arquivos simplesmente contêm um caminho por linha. por exemplo, / Programs / Mozilla / Calendar / bin.Links externos:
fonte
SETX
para fazer alterações permanentes. Tem uma sintaxe um pouco diferente.SETX
deve ser adicionado a partir dasWindows Server 2003 Resource Kit
versões anteriores doNT
.WM_SETTINGCHANGE
imagino e, portanto, notificará as partes interessadas sobre os novos valores. Por isso perguntei como se aplicava aqui. Criar algo em negrito não muda seu significado e não facilita a compreensão, assim como repetir a mesma frase, apenas mais alto. Além disso, editei este post algumas horas atrás para mencionar especificamente que os valores que os processos recebem são definidos quando são iniciados.WM_SETTINGCHANGE
,? API do Windows? Esta não é a audiência desta pergunta!) Pode não ser uma boa ideia, pois pode confundir o leitor em vez de explicar o que são essas variáveis. .Este post é de um ponto de vista mais técnico que o de Daniel, mas não explica tanto os conceitos.
O artigo da Wikipedia também é uma excelente referência.
Linux e a maioria dos BSDs
Na maioria dos shells da linha de comando, as variáveis de ambiente temporárias são definidas usando os comandos
export
(sh, bash, zsh) ousetenv
(csh, tcsh).Exemplos para antecedendo
$HOME/bin
a$PATH
em bash ou zsh:(Nesse caso em particular,
export
é desnecessário, poisPATH
já faz parte do ambiente.)csh, tcsh:
Variáveis de ambiente persistentes podem ser definidas durante vários estágios separados:
Conecte-se:
Configuração da sessão de logon: Linux
pam_env
, que geralmente lê/etc/environment
Logins do terminal: os arquivos de "perfil" do shell.
bash
usa/etc/profile
e o primeiro de:~/.bash_profile
,~/.bash_login
,~/.profile
.bash(1)
Seção da página do manual Invocação .Muitas vezes, o arquivo de perfil do usuário também inclui uma chamada explícita
~/.bashrc
.zsh
:zsh(1)
Seção da página manual Arquivos de inicialização / desligamento .csh
e outras conchas: Consulte as páginas apropriadas do manual.Logins gráficos: Não tenho certeza; pode variar dependendo do gerenciador de login. O GDM parece ler
~/.profile
no meu sistema.Abertura de uma janela do terminal:
bash
usa/etc/bash.bashrc
e~/.bashrc
.Série Windows NT
No prompt de comando (
cmd.exe
), useset name=value
para alterar variáveis de ambiente para essa janela.Para anexar
c:\bin
a%PATH%
, use:Isso afeta apenas esse
cmd.exe
processo e quaisquer novos processos lançados a partir dele.Para fazer alterações persistentes, use Painel de Controle → Sistema → Avançado → Variáveis de Ambiente . ( docs )
Nota: Enquanto as configurações do usuário normalmente substituem as do sistema, a
PATH
variável é tratada especialmente: as configurações do sistema e do usuário são mescladas no valor final.As alterações são armazenadas no Registro (veja abaixo) e se aplicam instantaneamente a todos os novos processos criados pelo Explorer (o shell gráfico), por exemplo, através do Menu Iniciar.
As variáveis de ambiente do sistema são mantidas no Registro
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
e carregadas na inicialização do sistema.O ambiente do usuário é mantido
HKCU\Environment
e carregado durante o logon do usuário.Por padrão, o sistema também procura
set
comandos noAUTOEXEC.NT
arquivo.MS-DOS, Windows de 16 bits, Windows 9x series
No prompt do MS-DOS (
command.com
), useset name=value
, como no WinNT.Da mesma forma, a execução
set
interativa afeta apenas essacommand.com
instância, juntamente com quaisquer novos processos iniciados a partir dela.Para fazer alterações persistentes, adicione ou edite
set
linhas apropriadas e , emC:\AUTOEXEC.BAT
seguida, reinicie.explorer.exe
partir da janela do prompt do MS-DOS .VMS
(Não foi possível resistir.)
O DCL não tem conceito de "caminho", mas várias definições de símbolo e comando podem ser inseridas
SYS$LOGIN:LOGIN.COM
.fonte
DCL$PATH
para " comandos estrangeiros automáticos ".Para as variáveis de ambiente global (não terminal) do
bash
shellPATH
, sigo a convenção usada na minha instalação da VM do Ubuntu - outros shells variarão:Advertência: O todo shell seqüência de start-up, que
.bashrc
,.profile
, etc. arquivos são provenientes variáveis em que ordem ?, quando eu tenho que re-login para obter visibilidade para os recém-definidos, aliases, etc ?, o que é a diferença entre um login , shell interativo e não interativo - eu usocron
? e por que, quando eu faço a,. ~/.bashrc
minhaPATH
variável estúpida cresce cada vez mais? são as principais perguntas que vêm à mente quando penso em minhaPATH
variável.Na verdade, eu reescrevi completamente todo o meu conjunto de arquivos de inicialização bash, usando idéias dos arquivos de esqueleto do Ubuntu e do cygwin, e aqui estão alguns dos meus sites:
PATH
e outras variáveis globais do ambiente (ieLD_LIBRARY_PATH
) variáveis no.profile
;~/.profile
a origem,$HOME/.bashrc
se existir;~/.bashrc
com um teste para execução interativa; caso contrário, saia;shopt
configuração imediata, controle de histórico, configuração do terminal, definição de função etc. (configuração relacionada interativa) na parte~/.bashrc
protegida para executar apenas no modo interativo;.profile
e.bashrc
funciona conforme o esperado. Ou seja, a menos que haja requisitos específicos para fazer o contrário, remova~/.bash_profile
&~/.bash_login
;~/.bashrc
arquivo e simplesmente o forneço com a. ~/.bashrc
para obter essas alterações no meu shell atual.PATH
, eu preciso modificar e originar meu~/.profile
;.profile
.Esses são meus 2 centavos nesse tópico.
fonte
P: O que são variáveis de ambiente?
R: As variáveis de ambiente são semelhantes às variáveis em qualquer linguagem de programação. No caso de sistemas Windows ou Unix, eles estão armazenando vários valores para permitir que programas e tarefas obtenham as informações necessárias do SO ou as informações de 'Ambiente'. Por exemplo:
USERPROFILE: diretório de usuários nos arquivos do SO.
CORREIO: onde o correio de um usuário pode ser encontrado nos arquivos do SO.
P: Qual é a variável PATH especificamente?
R: A variável PATH define os caminhos do diretório para procurar quando os comandos são executados, tanto para comandos RUN quanto para chamadas internas de programas. Isso impede que um programa precise saber seu local de instalação para chamar outros processos executáveis.
Ele procura a variável PATH do Sistema de Ambiente do Windows e testa cada local para o executável fornecido. Assim, adicionar um local à variável PATH permite que um executável seja chamado diretamente.
De acordo com este artigo da Wikipedia :
P: COMO adicionar um local à variável PATH?
R: Você precisa editar a cadeia de variáveis da variável PATH de variáveis de ambiente para incluir a localização do executável.
Uma maneira de fazer isso é descrita aqui :
C:\wamp\bin\php\php5.5.12;
Espero que isso esclareça um pouco da confusão.
fonte