O Subsistema do Windows para Linux ou Windows WSL é uma ótima solução para desenvolvedores trabalharem nativamente com o Linux diretamente em suas áreas de trabalho com a versão do Windows 10.
Se você passou muito tempo particionando discos rígidos para ter vários sistemas Linux instalados com o Windows, está com sorte com este artigo.
A fada madrinha do código na Microsoft decidiu lhe dar outra opção: O Subsistema do Windows para Linux (WSL). O WSL torna muito mais fácil e flexível executar um sistema Linux ao lado do Windows.
Neste tutorial, você aprenderá como começar com o WSL. Você aprenderá como começar a usar algumas ferramentas úteis, tornando o WSL ainda mais versátil do que usar o bash ou o PowerShell sozinhos.
Reduza as chamadas para o serviço de suporte e atualize as credenciais do cache para usuários remotos mesmo fora da VPN com uma solução de redefinição de senha self-service. Obtenha uma demonstração do Specops uReset!
O que é WSL?
O WSL ou C:\Windows\System32\wsl.exe é uma ferramenta do Windows que permite instalar uma distribuição Linux como um aplicativo na loja do Windows.
Como o WSL é um executável simples do Windows, você pode chamá-lo de um prompt de comando ou terminal do PowerShell. Vamos nos aprofundar nesse tópico mais tarde. Por enquanto, é importante entender um pouco mais sobre o que o WSL está fazendo nos bastidores.

Como Habilitar WSL
Para configurar e habilitar o WSL, é necessário instalar uma distribuição Linux ao lado do Windows 10. Mas de uma maneira que permita que os dois sistemas operacionais diferentes interajam entre si.
Pré-requisitos
Se você é um profissional de TI lutando com muitos pedidos de redefinição de senha no Active Directory, confira o Specops uReset, uma solução segura de SSPR.
Para instalar o WSL no Windows, você tem um requisito a ser atendido; você deve ter um computador Windows 10 de 64 bits com a compilação 18917 ou posterior.
Você pode encontrar a compilação do seu Windows 10 executando o utilitário winver.

Habilitando o Recurso do Windows para WSL
Habilitar o WSL é fácil; nenhum download é necessário. É apenas um recurso do Windows.
Para habilitar o WSL, abra o PowerShell como administrador e execute o seguinte:
Relacionado: Como Executar o PowerShell como Administrador
Assim que completar, reinicie seu computador e você está pronto!
Baixando uma Distribuição Linux para WSL
O WSL não instala nenhuma distribuição Linux por conta própria. Você precisará instalar uma. Assim que o Windows 10 reiniciar, comece a configurar a distribuição Linux escolhida.
Primeiro, abra a Microsoft Store e procure por ‘WSL’. Você logo verá uma lista de distribuições Linux aparecer.

Em seguida, escolha a sua distribuição de preferência e instale-a. Este tutorial utilizará o Ubuntu 18.04. No momento desta redação, você também tem algumas outras distribuições disponíveis, tais como:
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
- OpenSUSE Leap 15
- OpenSUSE Leap 42
- SUSE Linux Enterprise Server 12
- SUSE Linux Enterprise Server 15
- Kali Linux
- Debian GNU/Linux
- Fedora Remix for WSL
- Pengwin
- Alpine WSL
Configurando sua Versão WSL
Talvez você precise habilitar o Linux para funcionar com a versão 2 do WSL. Se for o caso, você pode fazer isso seguindo as instruções abaixo.
Em um console PowerShell:
- Liste as versões de Linux que você tem instaladas executando
wsl -l
ouwsl --list
. - Depois de obter a lista, copie o nome da distribuição que deseja executar com o WSL2 e execute
wsl --set-version <Distro> 2
, substituindo <Distro> pelo nome que você copiou anteriormente. - Confirme se o comando foi bem-sucedido executando
wsl -l -v
ouwsl --list --verbose
. Este comando retornará uma lista completa de distribuições WSL e a versão que cada distribuição está usando.

Você também pode definir sua versão padrão do WSL para WSL2 para quaisquer distribuições que você instalar no futuro, executando
wsl --set-default-version 2
Inicializando o WSL
Para começar a usar o WSL, abra um terminal do PowerShell e digite wsl
. Se você configurou o WSL corretamente, entrará em um terminal bash em execução na distribuição WSL de sua escolha. A partir daqui, você pode executar todos os comandos do Linux que desejar.
Abaixo, você encontrará uma referência a todas as opções que o wsl.exe fornece ao iniciar.
Command | Explanation | Example |
---|---|---|
exec, -e | Will run command using without using default shell | wsl -e curl google.com |
— | Passes anything after this parameter to default shell. Leaving the operator out will also work. | wsl — curl google.com, wsl curl google.com |
distribution, -d |
Opens a terminal in the specified distribution’s shell | wsl -d Ubuntu-18.04 |
user, -u |
Runs WSL command as the specified user as long as user exists on that distro | wsl -d Ubuntu-18.04 -u tux_user |
export |
Exports the specified distribution to a tar file on your local system. | wsl –export Ubuntu ./Test-Ubuntu.tar |
import |
Imports a tar file as a new WSL distribution. Can specify WSL version with the –version option | wsl –import Test-Ubuntu C:\data\Test-Ubuntu .\Test-Ubuntu.tar |
list, -l [Options] | wsl –list | |
all | List all installed WSL distributions | wsl -l –all |
running | List only WSL distributions that are currently running | wsl -l –running |
quiet, -q | Only show WSL distribution names | wsl -l -q |
verbose, -v | Show detailed information about all WSL distributions | wsl -l -v |
set-default, -s |
Sets the specified WSL distribution as the default distribution for WSL commands. | wsl -s Test-Ubuntu |
set-default-version |
Changes the default WSL version for all new distributions installed to that system | wsl –set-default-version 2 |
set-version |
Changes the WSL version of the specified distribution | wsl –set-version Test-Ubuntu 2 |
shutdown | Immediately terminates all running WSL distributions | wsl –shutdown |
terminate, -t |
Terminates the specified WSL distribution | wsl -t Test-Ubuntu |
unregister |
Unregisters the specified WSL distribution | wsl –unregister Test-Ubuntu |
help | Display information about using WSL | wsl –help |
Depois de se acostumar a usar esses comandos, você perceberá que executar e gerenciar aplicativos por meio do WSL é muito mais fácil do que gerenciar máquinas virtuais Linux por conta própria.
Dica rápida: Descubra todas as flags e argumentos para o WSL executando
wsl --help
.
Quando terminar, digite exit
para voltar ao terminal do PowerShell.
Compartilhando Recursos do Windows/Linux via WSL
Uma das melhores partes do WSL é que ele pode compartilhar recursos do Windows e do Linux entre si. Atualmente, você pode compartilhar sistemas de arquivos, variáveis de ambiente, recursos de rede e ferramentas de linha de comando como cmd e PowerShell.
Todos os exemplos que você verá nesta seção são via a distribuição WSL Ubuntu Linux. Sua experiência pode variar se você escolheu baixar uma distribuição diferente.
Compartilhando Sistemas de Arquivos
O sistema de arquivos é uma das coisas mais úteis para compartilhar com o WSL. O WSL permite que você trabalhe com ambos os sistemas de arquivos como se fossem um só.
O sistema de arquivos do Windows 10 é montado como um diretório no Linux, enquanto o sistema de arquivos do Linux será montado como uma pasta no Windows.
Encontrando o Sistema de Arquivos do Linux a partir do Windows com Variáveis de Ambiente
Ao instalar uma distribuição Linux com WSL, às vezes será adicionada uma variável de ambiente do Windows. No caso da distribuição Ubuntu do WSL, será criada uma variável de ambiente chamada UBUNTU_HOME. Essa variável de ambiente aponta para o diretório Linux /home/ubuntu tanto do Windows quanto do WSL Ubuntu.
O caminho definido em UBUNTU_HOME pode ser utilizado para executar scripts que usam recursos entre eles ou definir um local padrão para o terminal do Windows (abordado posteriormente).

Outras distribuições podem definir uma variável de ambiente semelhante. Verifique as variáveis de ambiente do Windows com o comando PowerShell Get-ChildItem -Path $Env:\
após instalar uma nova distribuição Linux para ver se alguma foi adicionada.
Este atalho de variável de ambiente é útil se você deseja colocar tudo no diretório /home/ubuntu. Mas vamos aprofundar um pouco mais sobre como isso aconteceu e como você pode acessá-lo de outras maneiras.
Encontrando o Sistema de Arquivos do Linux a partir do Windows através da Pasta de Pacotes da Microsoft Store
Não é garantido que toda distribuição WSL venha com uma maneira fácil de referenciá-la. É importante que você aprenda a encontrar o sistema de arquivos do Linux de uma maneira alternativa.
Como a maioria das distribuições Linux do WSL será instalada a partir da loja da Microsoft, você pode procurar pelo sistema de arquivos Linux no mesmo local que os outros aplicativos da loja do Windows. Navegue até %USERPROFILE%\AppData\Local\Packages\ para encontrar o diretório onde seus aplicativos da loja do Windows estão localizados. Em seguida, assuma o controle da pasta, pois geralmente ela é protegida por padrão.
Você verá muitas subpastas na pasta de pacotes onde o sistema de arquivos de sua distribuição Linux pode estar presente. A distro WSL Ubuntu, por exemplo, estava na pasta CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc para mim.
Se você navegar até a pasta do pacote, encontrará o sistema de arquivos Linux. Para o WSL Ubuntu, ele está localizado na pasta LocalState\rootfs. Este é o diretório raiz da sua distribuição Linux.

Encontrando o Sistema de Arquivos do Windows a partir do Linux
Para encontrar o sistema de arquivos do Windows 10 a partir do Linux, abra o WSL no Windows. O WSL então abrirá um terminal bash. Este terminal bash começará no seu diretório UBUNTU_HOME por padrão.
Você também pode encontrar a raiz dos volumes de armazenamento do Windows. Cada uma das suas unidades de letra do Windows (C, D, E, etc) é tratada como uma unidade montada a partir do sistema de arquivos Linux do WSL. Você encontrará cada volume montado como /mnt/c, /mnt/d, etc, desde que tenha privilégios de root.

Get-ChildItem C:\Windows\System32 | Select-Object -First 5
running on WSLO Sistema de Arquivos do WSL2
Navegar no sistema de arquivos do WSL é bastante direto. Qualquer pessoa não familiarizada com a estrutura de um sistema de arquivos Linux apreciará poder navegá-lo com o Windows Explorer. Mas se você quiser mudar para o WSL2, vai ser um pouco mais complicado.
O WSL2 muda como tudo funciona por baixo dos panos para compartilhar sistemas de arquivos. Para começar, o sistema de arquivos agora é um disco rígido virtual no formato vhdx em vez de um diretório.
Você pode encontrar o arquivo vhdx em %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState para uma distribuição Ubuntu WSL.
Você descobrirá que os arquivos VHDX podem ser montados no Windows com a ferramenta Gerenciador de Disco. Mas, os discos virtuais não podem ser montados enquanto a distribuição WSL estiver registrada.
Compartilhamento de Variáveis de Ambiente
As variáveis de ambiente são uma parte crucial de qualquer sistema operacional, facilitando a referência a binários e executáveis em qualquer lugar de suas aplicações.
Antes da compilação 17063 do Windows 10, a única variável de ambiente compartilhada entre o Windows 10 e o Linux WSL era a variável PATH. Desde então, é possível compartilhar variáveis de ambiente usando a variável de ambiente WSLENV.
Usar a variável de ambiente WSLENV para compartilhar outras variáveis de ambiente pode parecer um pouco meta. Para compartilhar variáveis de ambiente entre plataformas, na verdade você precisa definir variáveis de ambiente dentro de outra variável de ambiente.
Visão geral
Compartilhar variáveis de ambiente é um processo de três etapas abaixo. A única diferença significativa ao compartilhar entre Windows/Linux é o argumento de switch usado (referência completa abaixo).
- Defina variável de ambiente no Windows ou Linux.
- Configure a variável de ambiente WSLENV igual à variável de ambiente previamente definida seguida por um argumento de switch (para tradução de caminho).
- Leia a variável de ambiente no Windows ou Linux.
Opções de Compartilhamento
Você pode tornar variáveis disponíveis de quatro maneiras diferentes, dependendo da plataforma em que deseja que a variável de ambiente apareça usando switches (tabela mostrada abaixo).
- Sistema de arquivos do Windows para estar disponível apenas a partir dele mesmo
- Sistema de arquivos do WSL para estar disponível apenas a partir do WSL
- Sistema de arquivos do WSL para estar disponível tanto no WSL Linux quanto no Windows
- Sistema de arquivos do Windows para estar disponível tanto no WSL Linux quanto no Windows
Flag | Explanation |
---|---|
/p | Single path. A variable set with this will be translated between the Windows and WSL Linux and made available to both. |
/l | List of paths. Similar to /p , except it can accept more than one path. On Windows, this list will be delimited by semicolons while on WSL Linux it will be delimited by colons. |
/u | Unix path. A path set with this flag can only be accessed when invoking WSL Linux from Windows. Can be used with either the /p or /l flags |
/w | Windows path. A path set with this flag can only be accessed when invoking Windows from WSL Linux. Can be used with either the /p or /l flags |
Tradução de Caminho
A principal razão para compartilhar variáveis de ambiente é a tradução de caminho. Como você pode já saber, o Windows tem pastas de perfil de usuário, assim como o Linux tem diretórios de perfil de usuário, por exemplo. Cada usuário possui uma “pasta de usuário” predeterminada como C:\Users\<username> no Windows e /home/<username> no Linux.
Usando os switches /p
e /l
, o WSL traduzirá esses caminhos de pasta entre plataformas.
Compartilhando e Traduzindo Caminhos do Windows para o Linux
Você pode compartilhar um único caminho ou vários caminhos de uma vez usando as opções /p
e /l
.
Em um prompt de comando do Windows e com uma variável de ambiente do Windows chamada DESKTOP definida, atribua um valor de DESKTOP/p
à variável WSLENV. Isso permite acessá-lo a partir do WSL Linux. Você pode ver um exemplo abaixo.

O mesmo procedimento exato pode ser realizado para vários caminhos de uma vez usando a opção /l
.
Compartilhando e Traduzindo Caminhos do Linux para o Windows
Para compartilhar e traduzir caminhos do Linux para o Windows, o procedimento é o mesmo que para o Windows, embora utilizando comandos específicos do Linux para definir variáveis de ambiente.
Para uma visão mais aprofundada sobre o compartilhamento de variáveis de ambiente, confira, este artigo da Microsoft.
Compartilhando Recursos de Rede
O componente de rede é outro recurso útil para compartilhar entre o Windows e o WSL Linux.
Interfaces de Rede Física vs. Virtualizadas
No WSL2, as interfaces de rede são virtualizadas. Interfaces de rede virtualizadas significam que as instâncias de rede do WSL2 podem ter configurações IP diferentes de suas contrapartes no Windows 10.
No momento desta redação, os endereços IP para o Linux WSL2 usam Tradução de Endereço de Rede (NAT) para acessar recursos de rede no Windows, embora a Microsoft tenha mencionado que remover NAT é uma das principais questões a serem corrigidas.

Resolução de DNS do Cliente
O WSL ainda irá gerar os arquivos /etc/resolv.conf e /etc/hosts para permitir a resolução de DNS. Desde que você não substitua explicitamente esse comportamento em /etc/wsl.conf, a resolução de DNS do cliente continuará funcionando conforme o esperado.
Você aprenderá mais sobre o arquivo wsl.conf posteriormente neste post.
Usando PowerShell e Bash juntos
Uma das características mais legais do WSL é a capacidade de passar informações de forma transparente para e do PowerShell e Bash no WSL.
PowerShell –> Bash
Já que o executável WSL aceita entrada do pipeline, você pode chamar o comando wsl.exe dentro do PowerShell e aceitar stdin. Isso permite que você use o WSL para passar objetos inteiros do PowerShell para o WSL, que então são processados com o terminal bash. Você pode ver um exemplo abaixo.

grep
Bash –> PowerShell/Cmd
Você também pode passar informações do bash no WSL para o PowerShell e cmd com facilidade. Abaixo você pode ver um exemplo de execução do comando Linux ls e passando a saída para o cmdlet Select-Object
do PowerShell através do pipeline.

Você também pode chamar algumas utilidades do cmd do Windows a partir do WSL e passar a saída de volta para o Linux, desde que ambos os comandos estejam no caminho do sistema.
Lembre-se de que o WSL sabe qual é o caminho do sistema em ambos os lados, pois tem acesso à variável PATH do Windows por padrão
Abaixo, você pode ver que pode executar ipconfig, que é um comando do Windows, dentro do WSL e passar a saída para o comando Linux grep. Você também pode ver o oposto, chamando o comando Linux which e passando a saída para o comando Windows ipconfig.

Problemas de Tradução
Há algumas ressalvas ao passar a saída do comando de um lado para o outro entre o bash e o PowerShell.
Um grande problema é como o PowerShell e o bash retornam informações. O PowerShell é uma linguagem de programação orientada a objetos, enquanto o bash é uma ferramenta de manipulação de strings. Quaisquer objetos do PowerShell direcionados ao bash serão convertidos em uma string. Da mesma forma, qualquer saída do bash direcionada ao PowerShell será convertida em um objeto string.
Você pode contornar esse comportamento convertendo ou fazendo o cast explícito dos tipos de objeto no PowerShell, como no exemplo abaixo. Mas se você espera passar objetos entre o PowerShell e o WSL sem nenhum trabalho extra, ficará desapontado.

Ao fazer o cast da data do bash como a classe [datetime]
no PowerShell, agora temos um objeto válido do PowerShell que podemos usar em nosso script. Se você estiver escrevendo scripts que precisam ir do Windows para o WSL e vice-versa, é possível fazer isso com um pouco de ajuste no código.
Instale uma interface gráfica do Windows Subsystem para Linux com o Xfce4
Quando as ferramentas de linha de comando não são suficientes, é hora de usar as interfaces gráficas. Se você precisa executar uma utilidade gráfica no WSL, explorar uma distribuição personalizada ou se ainda não está familiarizado com o bash, você pode instalar uma GUI do Linux.
Xfce
O Linux possui muitos ambientes de desktop disponíveis. Um dos mais comuns de configurar para o WSL é chamado de Xfce. No momento desta redação, o Xfce está na versão 4. Outros ambientes de desktop estão disponíveis, mas neste artigo, você aprenderá a configurar o Xfce4.
xRDP
Quando você tem um ambiente de desktop Linux configurado, precisará de um serviço que compreenda o protocolo RDP. Neste artigo, vamos nos concentrar no servidor xRDP. xRDP é um servidor RDP de código aberto para Linux que permite usar clientes RDP para se conectar ao Linux da mesma forma que você faria com hosts Windows.
Configurando
Para acessar uma GUI do Linux a partir do Windows com Xfce4 e xRDP, siga as instruções abaixo. Em um terminal do WSL:
- Baixe e instale o Xfce4 – Baixe e instale o Xfce4 usando o comando
sudo apt-get -y install xfce4 && sudo apt-get -y install xubuntu-desktop
. Isso levará algum tempo. Aguarde. - Instale o servidor xRDP – Baixe e instale o xRDP executando o comando
sudo apt-get -y install xrdp
. - Configure o xRDP para o xfce4 –
echo xfce4-session > ~/.xsession
- Reinicie o xRDP –
sudo service xrdp restart
- Encontre o endereço IP da distribuição WSL –
ifconfig | grep inet
Neste ponto, você deverá ser capaz de abrir uma sessão RDP a partir do Windows 10. Abra a janela de conexão de desktop remoto usando mstsc
e forneça o endereço IP do Linux encontrado no passo #5.
Se tudo correr bem, você poderá abrir uma conexão RDP para a distribuição Linux que está em execução no seu sistema operacional Windows, conforme mostrado abaixo.

Dicas e Truques
Agora que você conhece o básico do WSL e como usá-lo, o que vem depois? Felizmente, existem muitas ferramentas que foram construídas para o WSL ou que funcionam bem com ele.
Configurando Itens de Configuração do WSL na Inicialização com wsl.conf
A configuration file exists in the WSL at /etc/wsl.conf. This file contains configuration settings that run every time the WSL distro is started. When the wsl.conf file exists, WSL will ingest any setting in this file every time the Linux distro is started.
Há algumas seções diferentes dentro do arquivo wsl.conf que você pode configurar.
- Automontagem – Montar unidades do Windows no início
- Rede – Gerar resolv.conf ou o arquivo hosts
- Interop – Habilitar ou desabilitar interoperação com o Windows
Para mais detalhes sobre o arquivo wsl.conf, confira a página Configurar Configurações de Inicialização do WSL da Microsoft
Desenvolvendo no WSL com Visual Studio Code (VS Code)
O VS Code aparentemente se integra com tudo e o WSL não é exceção. De dentro do VS Code, você pode configurar um espaço de trabalho na sua Distribuição WSL, mas manipulá-lo completamente com o VS Code no Windows. Nem mesmo é necessário ter um terminal em execução!
Para configurar o VS Code no Windows para trabalhar com o WSL, você primeiro obviamente precisa ter o VS Code para Windows instalado. Além disso, certifique-se de ter a extensão do VS Code Remote – WSL instalada.
Depois de ter a extensão instalada, você pode conectar-se a ela abrindo um terminal do WSL e executando code <workspace>
. <Workspace>
é o diretório de onde você deseja executar o VS Code. O VS Code então detectará que você está em uma distribuição WSL, abrirá uma janela e estabelecerá uma conexão com o espaço de trabalho.
Confirme se funcionou observando o ícone de conexão do WSL no canto inferior esquerdo do VS Code. Você deverá ver que ele tem o nome da sua distribuição WSL.

Você até pode usar o terminal integrado para interagir diretamente com o espaço de trabalho do WSL. Não há necessidade de executar uma janela separada para comandos do git bash.
Adicionando o Subsistema do Windows para Linux ao Terminal do Windows
Outro caso de uso útil do WSL é adicionar o console do WSL ao Terminal do Windows.
Dentro do Terminal do Windows, você adiciona cada distribuição WSL em sua própria aba. Você também pode personalizar a aparência de cada aba para não se perder.
Se você estiver usando uma distribuição WSL que define uma variável de ambiente para o diretório do usuário, como UBUNTU_HOME, você também pode configurá-la como o diretório inicial para o seu terminal.

Se você deseja um tutorial em vídeo completo sobre como configurar o WSL para funcionar com o Windows Terminal, confira o vídeo how-to da TechSnips abaixo.
Pensamentos Finais
Pare de lutar com chamadas de redefinição de senha e bloqueios de conta no Active Directory. Obtenha um teste GRATUITO do Specops uReset.
A Microsoft lançou o WSL para permitir aos desenvolvedores Linux a capacidade de desenvolver no Windows. Até agora, o WSL tem sido um passo na direção certa.
Parece que o WSL será um componente crucial da nova estratégia amigável à open source da Microsoft. Se a Microsoft vai competir com a Apple para ser a escolha dos desenvolvedores ao escrever seu código, será uma batalha difícil. Mas o WSL é uma carta forte a ser jogada.
O WSL traz muitos benefícios bem-vindos para os desenvolvedores, tais como:
- Muito mais leve do que executar VMs Linux locais
- Elimina a sobrecarga de instalar e gerenciar um hipervisor
- Não há mais necessidade de discos rígidos particionados
- Sem os complicados carregadores de inicialização do grub
O WSL simplesmente liga e funciona, para que todos possamos programar felizes para sempre.
Source:
https://adamtheautomator.com/windows-subsystem-for-linux/