O que você precisa saber
Aqui estão alguns detalhes básicos que você precisa saber sobre esse recurso:
- Conta de usuário: Os programas iniciados a partir do shell Bash serão executados como se fossem lançados pela conta de usuário atual do Windows.
- PermissõesEsses programas terão as mesmas permissões que o processo Bash.exe. Portanto, se você quiser que esses comandos tenham acesso de administrador, será necessário executar o shell Bash como administrador.
-
Diretório de trabalho: Programas do Windows compartilham o mesmo “diretório de trabalho” que o shell Bash. Portanto, se você executar um comando que lista o conteúdo do diretório atual, ele listará o conteúdo do diretório de trabalho atual no shell Bash. Use o
cd
comando para alterar diretórios de trabalho.
Com isso em mente, vamos dar uma olhada em como executar um programa.
Como executar um programa do Windows
Para executar um programa do Windows, insira o caminho para o arquivo.exe do programa no shell Bash. Lembre-se de que sua unidade Windows C: está disponível em / mnt / c no Bash. O ambiente Bash também diferencia maiúsculas de minúsculas, portanto, é necessário especificar a capitalização correta.
Digamos que você queira iniciar o utilitário Ping localizado em C: Windows System32 PING.EXE. Você executaria o seguinte comando:
/mnt/c/Windows/System32/PING.EXE
O comando a seguir não funcionaria, porque o Bash faz distinção entre maiúsculas e minúsculas:
/mnt/c/windows/system32/ping.exe
Por exemplo, digamos que você queira executar o programa Internet Explorer localizado em C: Arquivos de Programas (x86) Internet Explorer iexplore.exe. Você precisa executar o seguinte comando no Bash:
/mnt/c/Program Files (x86)/Internet Explorer/iexplore.exe
Observe o “” antes dos caracteres espaço e colchete. Esses caracteres devem ter "escapado" ou Bash não perceberá que os caracteres fazem parte de um caminho de arquivo.
Como passar um argumento para um comando
O shell Bash passa argumentos diretamente para os comandos que você executa.
Por exemplo, se você quisesse pingar example.com, você executaria:
/mnt/c/Windows/System32/PING.EXE example.com
Ou, se você quiser abrir o arquivo de hosts do Windows no Bloco de notas, execute:
/mnt/c/Windows/System32/notepad.exe 'C:WindowsSystem32driversetchosts'
Você usa o caminho de arquivo padrão do Windows ao passar um caminho de arquivo diretamente para um programa do Windows. Isso é porque Bash passa o argumento diretamente. Notepad.exe e outros programas do Windows esperam um caminho de arquivo do Windows.
Como executar um comando interno
Alguns comandos do Windows não são arquivos.exe, mas são incorporados ao próprio prompt de comando. Por exemplo, isso inclui o
dir
comando que você pode executar normalmente em um prompt de comando. Para executar esse comando, você precisa executar o
cmd.exe
binário associado ao prompt de comando e passar o comando como um argumento com / C, da seguinte forma:
/mnt/c/Windows/System32/cmd.exe /C command
Por exemplo, para executar o
dir
comando incorporado ao Prompt de Comando, você executaria o seguinte comando:
/mnt/c/Windows/System32/cmd.exe /C dir
Como adicionar diretórios ao caminho
O ambiente Windows Services for Linux trata os executáveis do Windows da mesma forma que trata os binários do Linux. Isso significa que você pode adicionar um diretório contendo arquivos.exe ao caminho e depois executá-los diretamente. Por exemplo, para adicionar o diretório System32 ao seu caminho, você executaria:
export PATH=$PATH:/mnt/c/Windows/System32
Você poderia então executar arquivos.exe do Windows localizados na pasta System32 diretamente, assim:
PING.exe example.com
notepad.exe
cmd.exe /C dir
Como canalizar a saída de um comando para outro
A saída de um comando do Windows pode ser canalizada para um comando do Linux e vice-versa. Por exemplo, você pode usar o
ipconfig.exe -all
comando para listar detalhes sobre suas interfaces de rede e canalizá-lo para o Linux
grep
comando para procurar a saída. Por exemplo, para listar todas as informações sobre sua conexão e pesquisar por seções que correspondam a "Endereço IPv4", você executaria:
/mnt/c/Windows/System32/ipconfig.exe -all | grep 'IPv4 Address'
E, se você quiser ir para o outro lado, você pode usar o comando "bash -c" para executar comandos Bash a partir do Prompt de Comando padrão do Windows.