Como eu adiciono variáveis de ambiente definidas pelo usuário à variável de sistema PATH no Windows 7?

9

Eu tenho duas variáveis definidas pelo usuário:

ANT_HOME set to %USERPROFILE%\Developer\Tools\Apache\Apache Ant\apache-ant-1.8.2 JAVA_HOME set to C:\Program Files\Java\jdk1.6.0_23

E eu quero acrescentar esses caminhos à variável System para que eu possa acessar os executáveis em suas pastas bin. Eu tentei

PATH set to [other paths];%ANT_HOME%\bin;%JAVA_HOME%\bin

No entanto, isso não funciona. Quando eu abro um prompt de comando e echo% PATH% as variáveis do usuário não são expandidas . Portanto, o caminho mostra apenas o literal:% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Eu pareço lembrar-me de que isso funciona bem nos meus antigos sistemas Windows XP. Como configuro isso no Windows 7?

    
por Michael Prescott 21.01.2011 / 18:28

2 respostas

1

Um artigo do Suporte da Microsoft em 2007 - número 329308 - descreve um bug no Shell32.dll, que é a causa deste problema. A solução é adicionar uma variável PATH à lista de variáveis do usuário definida como

%ANT_HOME%\bin;%JAVA_HOME%\bin

Isso funcionou em torno do problema. Eu não gosto de configurá-lo apenas para o meu usuário, mas de alguma forma o meu sistema está apresentando sintomas deste bug antigo e não vejo outra resposta melhor ainda.

    
por 26.02.2011 / 05:22
5

UPDATE NO.2 - Agora para a pergunta atual : Por que as variáveis aninhadas criadas pelo usuário não expandem?

Existem alguns problemas gerais relativos à expansão de variáveis no Windows. Já enfrentei o mesmo problema e não encontrei nenhuma circunstância clara e reproduzível - o nível de recursão em que a expansão falha não é consistente, os caracteres especiais não parecem desempenhar um papel, etc.

A única solução viável que encontrei é adicionar o nível de recursividade de variáveis por nível de recursão. Isso significa: tente excluir todas as variáveis que você deseja aninhar umas nas outras (incluindo chamadas do PATH para as variáveis definidas pelo usuário) e, em seguida, inicie a partir do zero. Defina suas variáveis básicas (etc. ANT-HOME), confirme, verifique se ela está expandida, se estiver, continue com o próximo nível commit, verifique ... você tem a idéia.

RESPOSTA ATUALIZADA - Definindo variáveis de ambiente permanentes usando a CLI e a GUI - Role para baixo para a resposta original

Método da GUI:

No Windows 7, basta digitar "system" no META-Prompt e você verá uma entrada "Edit the System Environment Variables". A partir daí, clique em "Variáveis de ambiente". Lá, você pode editar a variável de sistema PATH (lista inferior) ou adicionar / editar uma nova variável PATH às variáveis de ambiente do usuário.

Método da linha de comando:

Para alterar variáveis de ambiente permanentemente, você precisa usar o comando SETX na linha de comando do Windows. Ao contrário de outras versões do Windows, ele vem embutido no Windows 7. Sua sintaxe difere muito do SET, mas também é poderosa. Você terá que ser um pouco cuidadoso, é fácil fazer uma bagunça de suas variáveis com o SETX.

  • Por padrão, você altera variáveis do usuário . Você pode ter uma variável de ambiente de usuário PATH que coexiste alegremente com a variável PATH do sistema. Se você ainda não definiu, digite: SETX PATH yourpath

  • Você também pode adicionar um valor à variável de sistema PATH. Para fazer isso, primeiro você precisa abrir uma linha de comando com privilégios de administrador. Para fazer isso, pressione a tecla Meta (Windows), digite cmd e clique em CTRL + SHIFT + ENTER e confirme a caixa de diálogo do UAC.

Para adicionar novos valores ao caminho, você pode inserir

setx path "%path%;yournewpath" /m

É importante seguir essa sintaxe! Se você não incluir% path% primeiro, todos os valores existentes do caminho serão perdidos e substituídos apenas pelo novo caminho. A opção / m no final define a variável no ambiente do sistema.

Por favor, note que você terá que abrir uma nova linha de comando para fazer uso de sua nova variável.

Há também uma referência completa para a SETX no TechNet .

RESPOSTA ANTIGA O comando SET atualiza as variáveis somente pela duração da sessão da linha de comando atual.

A sintaxe correta para adicionar um valor a uma variável é 'set [variable] =% [variable]%; [novo valor]'

Observe que, à esquerda do sinal de igual, você deve omitir os sinais de porcentagem!

Fonte: Referência de linha de comando do TechNet para o Windows Server

    
por 05.02.2013 / 12:03