Instalei o subsistema do Windows para Linux e o ativei nos recursos de ativação do Windows. E então reiniciei meu PC. Verifiquei o cmd logo após reiniciar o PC digitando "wsl" e funcionou. Mas quando executo meu script de sua pasta que possui o comando "wsl -e xxx.sh", recebo um erro
'wsl' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
Vocês poderiam me ajudar com isso, por favor. Obrigada.
Meu PC está rodando no sistema operacional: Windows 10 Pro; Versão do Microsoft Windows: 1903; Os Build: 18362.418
Problema comum ao tentar acessar ferramentas de 64 bits de processos de 32 bits.
wsl.exe
está emSystem32
. Mas se o seu script for executado como um processo de 32 bits, todos os acessosSystem32
serão redirecionados paraSysWOW64
. Para acessarwsl.exe
na pasta "real"System32
, você terá que usarSysnative
em vez disso, como emC:\Windows\Sysnative\wsl.exe
.Este erro é abordado na seção "Solução de problemas de instalação" do guia de instalação do WSL :
A razão mais comum pela qual um comando que executa um programa executável funciona na linha de comando, mas não em um script em lote, é que, no script, antes da linha que contém o comando com problema, o usuário criou uma variável %path% . Pode parecer um nome útil para uma variável que contém, bem, um caminho . O problema é que esse nome de variável é usado pelo Windows para manter uma lista de pastas separadas por ponto e vírgula que são pesquisadas quando um executável é chamado. É uma variável do sistema . Se você o redefiniu, todos os executáveis (por exemplo, .exe, .bat, .vbs, etc) que o Windows usa não serão encontrados e o script falhará exatamente com esta mensagem, onde xxx é o programa ou arquivo que está esperado:
'xxx' is not recognized as an internal or external command, operable program or batch file.
Isso pode ser confuso porque os comandos internos ao ambiente cmd (dir, cls, set, copy, move, etc) (lista aqui ) ainda continuam funcionando nessa situação.
Você pode depurar um script onde há suspeita inserindo o
path
comando imediatamente antes de uma linha com problema. A variável de caminho do Windows começa com essas pastas e pode ser estendida à medida que os programas são instalados:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem