Eu tenho duas variáveis definidas pelo usuário:
ANT_HOME definido como% USERPROFILE% \ Developer \ Ferramentas \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME definido como C: \ Arquivos de Programas \ 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 definido como [outros caminhos];% ANT_HOME% \ bin;% JAVA_HOME% \ bin
No entanto, isso não funciona. Quando 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 me lembro disso funcionando bem em meus antigos sistemas Windows XP. Como faço para configurar isso no Windows 7?
windows-7
environment-variables
Michael Prescott
fonte
fonte
Respostas:
ATUALIZAÇÃO NO.2 - Agora, para a pergunta real : Por que variáveis aninhadas criadas pelo usuário não conseguem se expandir?
Existem alguns problemas gerais relacionados à expansão de variáveis no Windows. Eu já enfrentei o mesmo problema e não encontrei circunstâncias claras e reproduzíveis - o nível de recursão em que a expansão falha não é consistente, caracteres especiais parecem não desempenhar um papel etc.
A única solução viável que encontrei é adicionar variáveis ao nível de recursão por nível de recursão. Isso significa: tente excluir todas as variáveis que você deseja aninhar umas às outras (incluindo chamadas de PATH para suas variáveis definidas pelo usuário) e, em seguida, inicie do zero. Defina suas variáveis básicas (etc. ANT-HOME), confirme, verifique se ele foi expandido, se for, continue com o próximo nível de confirmação, verifique ... você entendeu.
RESPOSTA ATUALIZADA - Definindo variáveis de ambiente permanentes usando a CLI e a GUI - Role para baixo para obter a resposta original
Método da GUI:
No Windows 7, digite "system" no META-Prompt e você verá a 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 de linha de comando:
Para alterar variáveis de ambiente permanentemente, você deve usar o comando SETX na linha de comando do Windows. Diferente 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 ter um pouco de cuidado, porém, é fácil bagunçar suas variáveis com o SETX.
Por padrão, você altera as variáveis do usuário . Você pode ter uma variável de ambiente do usuário PATH que coexista felizmente com a variável PATH do sistema. Se você ainda não o definiu, faça isso digitando:
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 pressioneCTRL
+SHIFT
+ENTER
e confirme a caixa de diálogo UAC.Para adicionar novos valores ao caminho, agora você pode inserir
É importante seguir essa sintaxe! Se você não incluir% path% primeiro, todos os valores existentes do caminho serão perdidos e substituídos por apenas o novo caminho. A opção / m no final define a variável no ambiente do sistema.
Observe que você precisará criar uma nova linha de comando para fazer uso de sua nova variável.
Há também uma referência completa para o SETX no TechNet .
RESPOSTA ANTIGA O comando SET atualiza as variáveis apenas pela duração da sessão atual da linha de comandos.
A sintaxe correta para adicionar um valor a uma variável é 'set [variable] =% [variable]%; [new value] `
Observe que à esquerda do sinal de igual, você deve omitir os sinais de porcentagem!
Fonte: Referência da linha de comando do TechNet para Windows Server
fonte
Um artigo de Suporte da Microsoft de 2007 - número 329308 - descreve um bug no Shell32.dll, que é a causa desse problema. A solução é adicionar uma
PATH
variável à lista de variáveis do usuário definida comoIsso funcionou em torno do problema. Não gosto de defini-lo apenas para meu usuário, mas de alguma forma meu sistema apresenta sintomas desse bug antigo e não vejo outra resposta melhor ainda.
fonte