11Sep

Como executar programas do Windows a partir do shell do Bash do Windows 10

click fraud protection

Na Atualização de criadores, o shell do Bash do Windows 10 agora permite que você execute binários do Windows e comandos padrão do prompt de comando, diretamente do Bash. Você pode executar programas Linux e Windows do mesmo shell do Bash, ou mesmo incorporar comandos do Windows em um script Bash.

O que você precisa saber

Aqui estão alguns detalhes básicos que você precisa saber sobre este recurso:

  • Conta de usuário : Os programas iniciados a partir do shell do Bash serão executados como se fossem lançados pela conta de usuário atual do Windows.
  • Permissões : esses programas terão as mesmas permissões do processo Bash.exe. Então, se você quiser que esses comandos tenham acesso de Administrador, você precisará executar o shell do Bash como Administrador. Diretório de trabalho
  • : programas do Windows compartilham o mesmo "diretório de trabalho" como o shell do Bash. Então, 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 do Bash. Use o comando cd para alterar os diretórios de trabalho.
    instagram viewer

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, digite o caminho para o arquivo. exe do programa no shell do Bash. Lembre-se de que sua unidade Windows C: está disponível no /mnt/ c no Bash. O ambiente Bash também é sensível a maiúsculas e minúsculas, então você precisa especificar a capitalização correta.

Digamos que você deseja iniciar o utilitário Ping localizado em C: \ Windows \ System32 \ PING.EXE.Você executaria o seguinte comando:

/mnt/c/Windows/System32/ PING.EXE

O seguinte comando não funcionaria, porque Bash é sensível a maiúsculas e minúsculas:

/mnt/c/windows/system32/ ping.exe

Isso é um pouco mais complicado se o caminho contiver caracteres complexos como espaços e parênteses,como as pastas Arquivos de programas. Você precisa "escapar" de espaços, suportes e outros caracteres complexos, prefixando-os com um caractere "\".

Por exemplo, digamos que você queria executar o programa Internet Explorer localizado em C: \ Arquivos de Programas( x86) \ Internet Explorer \ iexplore.exe. Você precisaria executar o seguinte comando em Bash:

/mnt/c/ Program \ Files \ \( x86 \) / Internet \ Explorer / iexplore.exe

Observe o "\" antes do espaço e dos caracteres do suporte. Esses caracteres devem ser "escapados" ou Bash não perceberá que os personagens fazem parte de um caminho de arquivo.

Como passar um argumento para um comando

O shell do Bash passa argumentos diretamente para os comandos que você executa.

Por exemplo, se você quisesse fazer ping para example.com, você executaria:

/mnt/c/Windows/System32/ PING.EXE example.com

Ou, se você quisesse abrir o arquivo de hosts do Windows no Bloco de Notas, você executaria:

/mnt/c/Windows/System32/ notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts "

Você usa o caminho padrão do arquivo 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 incorporado

Alguns comandos do Windows não são arquivos. exe, mas são incorporados no prompt de comando em si. Por exemplo, isso inclui o comando dir que você normalmente pode executar em um prompt de comando. Para executar esse comando, você precisa executar o binário cmd.exe associado ao prompt de comando e passar o comando como um argumento com / C, assim:

/mnt/c/Windows/System32/ cmd.exe / C comando

Por exemplo, para executar o diretóriocomando incorporado no prompt de comando, você executaria o seguinte comando:

/mnt/c/Windows/System32/ cmd.exe / C dir

Como adicionar diretórios ao caminho

O ambiente do Windows Services para Linux trata os executáveis ​​do Windows de forma semelhante à que trata os binários do Linux. Isso significa que você pode adicionar um diretório contendo arquivos. exe no caminho e, em seguida, execute esses arquivos. exe 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: exemplo

PING.exe.com notepad.exe cmd.exe / C dir

Como separar a saída de um comando para outro

A saída de um comando do Windows pode ser canalizada para um comando Linux e vice-versa. Por exemplo, você pode usar o comando ipconfig.exe -all para listar detalhes sobre suas interfaces de rede e canalizá-lo para o comando grep do Linux para pesquisar a saída. Por exemplo, para listar todas as informações sobre sua conexão e procurar seções que correspondam a "Endereço IPv4", você executaria:

/mnt/c/Windows/System32/ ipconfig.exe -todos |grep "Endereço IPv4"

Esse é o processo básico. Esses comandos também funcionarão quando incorporados em um script Bash, para que você possa escrever um script Bash que inclua comandos do Windows e utilitários Linux. Se ele for executado no shell do Bash, ele funcionará em um script do Bash.

E, se você quiser ir do outro lado, você pode usar o comando "bash-c" para executar comandos do Bash a partir do prompt de comando padrão do Windows.

ARTIGOS RELACIONADOS
Como criar e executar Bash Shell Scripts no Windows 10
Como executar comandos Linux de fora do shell Bash no Windows 10