2011-05-16 18:25:57 +0000 2011-05-16 18:25:57 +0000
347
347

O que são PATH e outras variáveis de ambiente, e como posso defini-las ou usá-las?

As perguntas sobre

  • definir variáveis de ambiente
  • os 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 um bom Q/A para isto.

Assim é a pergunta: O que são variáveis de ambiente, como o executável PATH, e como posso alterá-las e utilizá-las nos principais sistemas operativos?

Uma boa resposta incluiria uma explicação simples do que as variáveis de ambiente e especialmente PATH significam para o SO, bem como orientações simples sobre como as definir e ler em conformidade.

Respostas (5)

337
337
337
2011-05-16 18:44:52 +0000

O que são variáveis de ambiente?

As variáveis de ambiente contêm valores relacionados com o ambiente actual, como o sistema operativo ou sessões de utilizador.

Path

Uma das mais conhecidas chama-se PATH em Windows, Linux e Mac OS X. Especifica os directórios em que os programas executáveis* estão localizados na máquina que podem ser iniciados sem conhecer e digitar todo o caminho para o ficheiro na linha de comandos. (Ou no Windows, o diálogo Executar no Menu Iniciar ou

+R).

No Linux e Mac OS X, normalmente contém todos os directórios bin e sbin relevantes para o utilizador actual. No Windows, contém pelo menos os directórios C:\Windows e C:\Windows\system32 - é por isso que pode correr calc.exe ou notepad.exe a partir da linha de comandos ou da caixa de diálogo correr, mas não firefox.exe. (O Firefox está localizado em C:\Program Files\Mozilla Firefox. Para informações sobre como incluir o Firefox, vá a aqui .)

Por exemplo, digitando calc (o .exe can será omitido) na linha de comando no Windows irá iniciar a Calculadora do Windows.

* Pode adicionar suporte para extensões de ficheiros diferentes de .exe editando %PATHEXT% .

Outras

Outras variáveis podem dizer aos programas que tipo de terminal é utilizado (TERM em Linux/Mac OS X), ou, em Windows, onde se encontra a pasta Windows (por exemplo %WINDIR% é C:\Windows).

Criar novas variáveis de ambiente

No Windows, Linux e Unix, é possível criar novas variáveis de ambiente, cujos valores são depois disponibilizados a todos os programas aquando do seu lançamento.

Pode usar isto ao escrever scripts ou programas que estão instalados ou implementados em múltiplas máquinas e que necessitam de referenciar valores que são específicos para estas máquinas. Embora um efeito semelhante possa ser alcançado usando configurações específicas de programas, é mais fácil fazê-lo usando uma variável de ambiente se vários programas precisarem de aceder ao mesmo valor.

 

Windows

GUI

  1. Aberto Control Panel » System » Advanced » Environment Variables.

GUI

GUI

  1. Digite control sysdm.cpl,,3 no diálogo Executar (

    +R) e clique em Environment Variables. Para editar variáveis de utilizador pode também digitar

  2. Clique com o botão direito do rato em (Meu) Computador e clique em Propriedades, ou simplesmente prima

    +Break.

  3. Existem muitas outras formas de chegar ao mesmo local, tais como digitando “variáveis de ambiente” no menu Iniciar/caixa de pesquisa no ecrã, etc.

As variáveis de ambiente no Windows são separadas em valores específicos do utilizador e da máquina/sistema. É possível visualizar e editar os seus valores aí. Os seus valores actuais no arranque são disponibilizados a todos os programas.

Há também Editor de Ambiente Rápido , que ajuda a definir e alterar variáveis de ambiente no Windows sem necessidade de ir ao fundo nas definições do sistema. Outro programa de código aberto para Windows com o qual o ambiente de caminhos pode ser editado muito convenientemente é Path Editor .

Linha de Comando

Formato

Environment Variables in Windows são indicados com sinais de percentagem (%) em torno do nome:

%name%

echo

Para mostrar o valor de uma variável de ambiente em cmd.exe, digite echo %name%.

C:\>echo %USERPROFILE%
C:\Users\Daniel

set

Para criar/set uma variável, utilizar set varname=value:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

Para apender/add uma variável, utilizar set varname=value;%varname%:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

As variáveis de ambiente assim definidas estão disponíveis para (o resto da) duração do processo de Prompt de Comando em que são definidas, e estão disponíveis para processos que são iniciados depois de as variáveis terem sido definidas.

setx

Para criar/set uma variável permanently* , use setx varname "value":

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

Ao contrário de set, não há sinal de igual e o valor deve ser colocado entre aspas se contiver algum espaço. Note que as variáveis podem expandir-se para uma string com espaços (por exemplo, %PATH% torna-se C:\Program Files), por isso é melhor incluir aspas em torno de valores que contenham quaisquer variáveis.

Deve adicionar manualmente setx a versões do Windows anteriores ao Vista. Windows XP Service Pack 2 Support Tools

Lista de variáveis de ambiente Windows

Aqui é uma lista de variáveis de ambiente por defeito , que são incorporadas no Windows. Alguns exemplos são:%WINDIR%, %SystemRoot%, %USERPROFILE%, %APPDATA% e /etc. Como a maioria dos nomes em Windows, estes são sensíveis a maiúsculas e minúsculas.

 

derivados Unix (FreeBSD, GNU / Linux, OS X)

Variáveis de ambiente em Linux são prefixadas com um sinal de dólar ($) como $HOME ou $HOSTNAME. Muitas variáveis conhecidas e padrão são escritas em letras maiúsculas para significar exatamente isso. Tenha em mente que os nomes das variáveis são sensíveis a maiúsculas e minúsculas, o que significa que $User e $USER não têm qualquer relação do ponto de vista da shell.

As derivadas Unix definem variáveis do sistema em scripts da shell localizadas principalmente na pasta /etc/profile, mas  valores específicos do utilizador podem ser dados a essas variáveis em scripts localizados na pasta home (por exemplo, $HOME/.bash_profile, .profile). O ficheiro export na pasta home é um local comum para definir as variáveis do utilizador.

Configuração variáveis

Estes ficheiros são scripts de shell regulares e podem conter mais do que simples declarações de variáveis de ambiente. Para definir uma variável de ambiente, use env. Para mostrar as variáveis de ambiente actualmente definidas num terminal, execute export.

O comando setenv é uma forma padrão de definir variáveis. A sintaxe é muito intuitiva. O resultado é idêntico para estas duas linhas, mas a primeira alternativa é preferível no caso de ser necessária a portabilidade ao pré-POSIX Bourne shell.

var=value; export var
export var=value

A shell C e os seus descendentes usam uma sintaxe completamente diferente; ali, o comando é /etc/paths.

Veja o projecto de documentação Linux, Path HOWTO para uma discussão mais aprofundada sobre este tópico.

Talvez ao contrário da crença comum, o OS X é mais “Unix” do que o Linux. Adicionalmente aos ficheiros já mencionados, $PATH pode ser modificado nestes ficheiros:

  • /bin contém todos os directórios padrão que são adicionados ao caminho, como /usr/sbin e /etc/paths.d.
  • Qualquer ficheiro em setx - comummente utilizado pelos instaladores para tornar os ficheiros executáveis que fornecem disponíveis a partir da shell sem tocar nos ficheiros de configuração de todo o sistema ou específicos do utilizador. Estes ficheiros contêm simplesmente um caminho por linha, por exemplo /Programs/Mozilla/Calendar/bin.

 

Links Externos:

Environment Variables in XP Windows XP Service Pack 2 Support Tools (Inclui &007) Environment Variables in Windows Vista and Windows 7 Adicionar executáveis à caixa de diálogo Run Dialog Box Mac OSX Tips - Setting Environment Variables TLDP: Path Howto

64
64
64
2011-05-16 19:03:17 +0000

Este post é de um ponto de vista mais técnico que o do Daniel, mas não explica tanto os conceitos.


O artigo Wikipedia é também uma excelente referência.

Linux e a maioria dos BSDs

Na maioria das shells de linha de comandos, as variáveis temporárias de ambiente são definidas usando comandos export (sh, bash, zsh) ou setenv (csh, tcsh).

  • Exemplos para pré-definir $HOME/bin para $PATH em bash ou zsh:

  • csh, tcsh:

As variáveis de ambiente persistentes podem ser definidas durante vários estágios separados:

  • Login:

  • Abertura de uma janela terminal:

Windows NT series

  • Em Command Prompt (cmd.exe), use set name=value para alterar as variáveis de ambiente para essa janela.

  • Para fazer alterações persistentes, use Control Panel → System → Advanced → Environment Variables.

  • As variáveis de ambiente do sistema são mantidas no Registo, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, e carregadas no arranque do sistema.

  • Por defeito, o sistema também procura comandos set no ficheiro AUTOEXEC.NT.

MS-DOS, Windows 16-bit, Windows 9x series

  • No Prompt MS-DOS (command.com), use set name=value, como no WinNT.

  • Para fazer alterações persistentes, adicionar ou editar linhas set apropriadas em C:\AUTOEXEC.BAT, depois reiniciar.

VMS

(Não resistiu.)

DCL não tem conceito de “caminho”, mas várias definições de símbolos e comandos podem ser colocadas em SYS$LOGIN:LOGIN.COM.

9
9
9
2014-01-15 17:49:57 +0000

Para as variáveis de ambiente bash shell PATH global (não-terminal), sigo a convenção utilizada na minha instalação Ubuntu VM - outras shells irão variar:

Caveat: Toda a sequência de arranque da shell, quais os ficheiros .bashrc, .profile, cron, etc., por que ordem?, quando é que tenho de voltar a fazer o login para obter visibilidade para variáveis recentemente definidas, pseudónimos, etc? qual é a diferença entre um login, shell interactivo e não-interactivo - eu uso . ~/.bashrc?, e porque é que quando faço um PATH é a minha estúpida variável PATH a crescer cada vez mais? são as questões chave que me vêm à cabeça quando penso na minha variável PATH.

Na verdade, acabei de reescrever completamente todo o meu conjunto de ficheiros de arranque bash tirando ideias dos ficheiros do esqueleto Ubuntu e cygwin, e aqui estão alguns dos meus em sites:

  1. Exportar o LD_LIBRARY_PATH e outras variáveis de ambiente global (i.e. .profile) variáveis do ~/.profile;
  2. Utilizar a lógica em $HOME/.bashrc para obter ~/.bashrc, caso exista;
  3. Execução de cerca do shopt com um teste de execução interactiva, saída de outra forma;
  4. Coloque todos os pseudónimos, ~/.bashrc, configuração rápida, controlo do histórico, configuração do terminal, definição da função, etc. (configuração interactiva relacionada) na parte do .profile que está protegida para funcionar apenas em modo interactivo;
  5. Livre-se dos outros ficheiros de arranque da base, porque a sua existência determina se o caminho de controlo através do .bashrc e do ~/.bash_profile funciona como esperado. Isto é, a menos que haja requisitos específicos para fazer o contrário, remover ~/.bash_login & ~/.bashrc;
  6. Quando estou no prompt da bash, e preciso de actualizar alguma configuração por defeito, edito o meu ficheiro . ~/.bashrc, e depois simplesmente procuro-o com um PATH para obter essas alterações na minha shell actual.
  7. quando faço uma alteração numa variável de ambiente como ~/.profile, preciso de modificar e obter o meu .profile; 8.
8
8
8
2014-07-25 09:57:28 +0000

Q: WHAT are Environment Variables ?

A: Environment Variables are similar to variables in any programming language. No caso de sistemas Windows ou Unix estão a armazenar vários valores para permitir que os programas e tarefas obtenham a informação necessária do SO ou a informação “Ambiente”. Por exemplo:

USERPROFILE : directório de utilizadores dentro dos ficheiros OS.

MAIL : onde o correio de um utilizador pode ser encontrado dentro dos ficheiros OS.

Q: O QUE é a variável PATH especificamente?

A: A variável PATH define caminhos de directório para procurar quando os comandos são executados, tanto para comandos RUN, como para chamadas internas de programas. Isto evita que um programa precise de saber o seu local de instalação para chamar outros processos executáveis.

A variável PATH procura a variável PATH do Sistema de Ambiente Windows e testa cada local para um determinado executável. Assim, adicionar um local à variável PATH permite que um executável seja chamado directamente.

De acordo com este artigo Wikipedia :

Quando um comando é inserido numa shell de comandos ou uma chamada de sistema é feita por um programa para executar um programa, o sistema primeiro procura o directório de trabalho actual e depois procura o caminho, examinando cada directório da esquerda para a direita

  • *

*Q: COMO adicionar um local à variável PATH ? *

A: É necessário editar a cadeia de variáveis da variável Environment Variables PATH para incluir a localização do seu executável.

Uma forma de o fazer é descrita aqui :

  1. Abra o Menu Iniciar e clique com o botão direito do rato no Computador. Seleccione Propriedades.
  2. Seleccione Advanced system settings.
  3. No separador Advanced (Avançadas), seleccione Environment Variables.
  4. Seleccione EDIT (Editar) ou NEW (Novo). (para PATH você mais provavelmente quer EDITAR).
  5. Adicione o seu caminho de localização. por exemplo: C:\wamp\bin\php\php5.5.12;

Espero que isto clarifique alguma da confusão.

0
0
0
2020-02-26 10:20:48 +0000