Qual é o diretório inicial do Windows Subsystem for Linux?


87

Quando inicio bashno Windows Subsystem para Linux, ele me coloca no diretório

/mnt/c/Users/<username>

Quando eu lseste diretório, vejo os diretórios Desktop, Documentsetc., que eu posso ver são no C:\Users\<username>usando o Windows File Explorer. Como esse é o local em que o bashprograma foi iniciado, eu esperava que esse fosse o meu diretório pessoal, mas quando eu digito cdou cd ~sou levado para

/home/<username>

que contém o meu .bashrc, .profileetc. arquivo que eu esperaria encontrar no meu diretório home em uma caixa de Linux. Além disso, entrar cd ../..a partir daqui eu posso ver os diretórios bin, etce assim por diante, mais uma vez como esperado em uma caixa de Linux.

Eu tenho duas perguntas sobre tudo isso:

  1. O que exatamente é /mnt/c/Users/<username>comparado C:\Users\<username>? Parece que eles são um na mesma --- então o que é /mnt/c/?
  2. Como posso visualizar os arquivos /home/<username>usando o Windows File Explorer? Não que eu realmente queira --- estou apenas tentando entender como o Windows está organizando essa coisa do Subsistema para Linux.

Respostas:


103

Para 2: o caminho atual agora está relacionado a qual distribuição você instalou da Microsoft Store em vez de um caminho global. Portanto, para o Ubuntu, agora está localizado em:

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

Presumo que as outras distribuições estarão em um local semelhante nas respectivas pastas em:

%LOCALAPPDATA%\Packages\

11
Alguém achou esta prática perturbadora? Minha pasta HOME não deveria ser o UM lugar seguro para MEUS dados dentro de um repositório? Com essa abordagem, um repositório quebrado e reinstalar as mangueiras MY DATA sem nenhuma tentativa de protegê-lo E fica oculto quando eu já tenho um REAL / lar. Por que os dados não persistem lá? Isso é ainda mais perigoso, porque agora estamos sendo encorajados a tentar / usar / trocar distros (WLinux). Realmente parece que alguém não pensou nisso tudo.
rainabba

No meu caso (1809), a pasta é chamada CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao

2
Nota importante: Você ainda não deve vasculhar arquivos Linux usando as ferramentas do Windows. Consulte: blogs.msdn.microsoft.com/commandline/2016/11/17/… (veja também a publicação do blog em si)
coltoneakins

fantástico. outra razão pela qual o git para windows / mingw ainda funciona melhor ... muito mais pensamento é colocado em cargas de trabalho diárias reais. existe uma maneira de remapear corretamente?
enorl76 17/02

11
@rainabba À primeira vista, eu concordo, mas depois de pensar um pouco, ainda estou escolhendo usar o Windows em vez do Ubuntu completo. Como tal, estou tratando a WSL como uma maneira de acessar as ferramentas do Linux, mas ainda tratando meu sistema de arquivos do Windows como cidadão de primeira classe. Então /mnt/c/é onde eu guardo tudo na WSL. Eu adoraria se o WSL fosse revertido para o LWS; o que significa que seria incrível se todos nós rodássemos o Ubuntu com Linux Subsystems for Windows para executar uma cópia completa do Windows 10 integrada ao Ubuntu. Eu sei, isso seria muito mais difícil, mas é possível sonhar.
Chev 12/07

29
  1. /mnt/cé exatamente o mesmo que C:\. É apenas a sintaxe para acessar a partir da WSL.
  2. Olhe dentro C:\Users\<username>\AppData\Local\Lxss\rootfs.

8
Aviso: blogs.msdn.microsoft.com/commandline/2016/11/17/… esse é o lugar sim, mas não altera nada.
chx 5/05

6
A partir de 2018, esta resposta não será mais válida. Veja a resposta de @ MichaelBond.
dr01

11
Agora ele se foi para C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Você pode ciente de quão ruim se você editar /manualmente
mementototem

para facilitar o acesso via copy-pasta, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
galho

Observe que a pasta lxss ficará oculta no Gerenciador de arquivos, a menos que você desmarque "Opções de pasta> Exibir: Configurações avançadas: ocultar arquivos protegidos do sistema operacional (recomendado)". Mas mesmo estando oculto, você ainda pode abrir a pasta no Explorador de Arquivos se a inserir no caminho da pasta.
Daryn

18

Sobre o sistema de arquivos montado em /mnt/c

  1. O que exatamente é / mnt / c / Users / comparado com C: \ Users \? Parece que eles são o mesmo --- então o que é / mnt / c /?

Ao contrário do Windows, o Linux (e os outros sistemas baseados em Unix) usam uma única estrutura de pastas, independente do número de discos que você possui. Se você tiver vários discos, todos esses discos deverão ser montados na estrutura da pasta em algum momento.

  • Normalmente, todos os discos (diferentes dos usados ​​para inicializar o sistema) são montados em uma pasta chamada /mntou/media

O WSL possui um tipo especial de sistema de arquivos chamado DrvFS que fornece acesso aos discos usados ​​no Windows. Você pode usar o DrvFS para montar, não apenas o sistema de arquivos do Windows, mas também discos de rede e outros tipos de mídia.

  • No WSL, por padrão, o C:disco no Windows é montado em/mnt/c
  • Se você tiver outro disco, por exemplo, um D:disco no Windows, ele será montado em/mnt/d

Os arquivos que você pode ver /mnt/csão os mesmos que você possui C:. Se você modificar algum arquivo, também receberá as alterações nas janelas.

Você pode usar o mountcomando para acessar outros tipos de mídia (por exemplo, unidades removíveis ou compartilhamentos de rede).


Sobre a localização de /home/<username>

  1. Como posso visualizar os arquivos em / home / usando o Windows File Explorer? Não que eu realmente queira --- estou apenas tentando entender como o Windows está organizando essa coisa do Subsistema para Linux.

Na WSL, todo o sistema de arquivos linux está localizado em uma pasta do Windows. O local da pasta depende da versão do Windows e da distribuição WSL que você está usando.

  • As versões iniciais do WSL armazenam o sistema de arquivos linux em%LOCALAPPDATA%\Lxss\rootfs
  • As distribuições WSL instaladas na Windows Store , a partir do Windows Build 16215 (meados de 2017), usam uma pasta como %LOCALAPPDATA%\Packages\...\LocalState\rootfs. O nome do pacote varia dependendo da distribuição (por exemplo, é diferente para o Ubuntu e para o Debian)
  • As distribuições Linux instaladas usando outras ferramentas , como lxRunOffline ou WSL-DistroLauncher, podem armazenar o sistema de arquivos linux em qualquer local.

Você pode verificar muitas opções para saber a localização da pasta WSL . Por exemplo, acho que a opção mais fácil é usar lxRunOffline para conhecer a pasta de instalação.

## You can use lxrunoffline to check which WSL distributions have installed
## using:   lxrunoffline list

C:\> lxrunoffline list
backup
Ubuntu-18.04    

## And you can use it to get the location of any of these WSL installations
## using:   lxrunoffline get-dir -n <name of distribution>

C:\> lxrunoffline get-dir -n backup
c:\wsl\installed\backup

C:\> lxrunoffline get-dir -n Ubuntu
C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

Depois de saber o local da pasta de instalação, o /home/<username>item está abaixo <installation folder>\rootfs\home\username.

  • Por exemplo, se sua pasta de instalação for c:\wsl\ubuntu
  • o /home/<username>está emc:\wsl\ubuntu\rootfs\home\username

NOTA: O Linux e o Windows armazenam permissões de arquivo de maneiras diferentes. Atualmente, o WSL DrvFS armazena as permissões do Linux como Streams (metadados) anexados aos arquivos que você pode ver no Windows. A Microsoft não recomenda modificar arquivos linux usando programas do Windows. É possível que alguns aplicativos do Windows danifiquem as permissões do linux sem aviso prévio.


5

Suponho que possa depender de qual versão do Windows você está, mas para mim em 2018 no Windows 10 Pro de 64 bits, Versão 1709 (Compilação 16299.522 do SO) e também Versão 1803 (Compilação 17134.165 do SO) [uma atualização do Windows ocorreu ironicamente quando eu estava digitando isso] o local ainda está:

C:\Users\<username>\AppData\Local\lxss

O truque é que, quando você está no ponto C:\Users\<username>\AppData\Local, não verá uma lxsspasta (a menos que desmarque "Ocultar arquivos protegidos do sistema operacional (recomendado)" nas opções da pasta).

No entanto, basta anexar \lxssna barra de endereços do Windows Explorer e ele o levará para a pasta.

(Observe que eu não tinha um %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscou algo parecido que foi mencionado na resposta de Michael Bonds)

Atualizar

Acontece que há WSL herdado, que foi o que eu tinha instalado. Agora, o WSL é fornecido por meio de um aplicativo da loja da Microsoft. Existem versões para o Ubuntu 18.04 LTS e também agora alguns outros tipos de Linux (por exemplo, Debian). Se você deseja estar atualizado, desinstale o WSL herdado e instale a versão da loja da Microsoft .

A localização da sua pasta pessoal dependerá de qual desses tipos de WSL você instalou.


4
  1. Usando o console bash do WSL, em seu diretório pessoal, crie um arquivo com um nome específico arbitrário como "test_here.txt".
  2. Em seguida, usando o Windows Explorer, usando a caixa de pesquisa, procure o arquivo test_here.txt.
  3. No arquivo encontrado> clique com o botão direito do mouse em> Abrir local do arquivo.

Eu tentei isso. Isso não funciona. Não vejo o arquivo na pesquisa. No entanto, se eu soltar o arquivo em / mnt / c / Users / <username>, ele obviamente funcionará.
Eamonn Kenny

Receio ter tentado a WSL, mas não uso mais isso. Não achei muito útil. (Uso cygwin diariamente, em vez da WSL, e acho muito útil.) Portanto, não posso mais verificar isso, desculpe;)
Ellis

Procurando por rootfs funciona. você pode navegar pelo sistema de arquivos unbuntu a partir daí.
tigr 21/01

2

Quatro etapas para o Windows 10 Pro fixar seu Debian / Ubuntu / OpenSUSE $ HOME no menu Iniciar do Windows:

  1. No menu Iniciar, inicie o Explorador de Arquivos
  2. Na barra de endereço (não na barra de pesquisa), digite% LOCALAPPDATA%.
  3. Na barra de pesquisa, procure o seu nome de diretório $ HOME, no meu caso, era ekenny. Haverá cerca de 3 versões disso, mas você deseja uma com um caminho muito longo.
  4. Clique com o botão direito do mouse no diretório inicial e clique em "Fixar no Início".

Agora você tem seu diretório pessoal fixado no menu Iniciar. Tentei criar um atalho, mas isso não vai a lugar nenhum inteligível.


0

Eu só precisava encontrar /etc/environmentusando o Ubuntu 16.04 olhando para o armazenamento NTFS do Windows 10. Encontrei aqui:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Mudei /mnt/c/para C:\a nomenclatura do Windows.
  • Também mudei todas as ocorrências de /para \pelo mesmo motivo.
  • Você precisa substituir USER_NAMEpelo seu nome de usuário do Windows.
  • Eu tive que usar sudo -H Nautiluspara obter permissões para visualizar os arquivos de usuário armazenados na WSL.
  • NUNCA atualize seus arquivos Linux na WSL usando um aplicativo do Windows. Ele irá corromper seus dados do Linux .

Do lado do Linux (Ubuntu 16.04), a nomenclatura seria:

$ sudo cat /mnt/c/Users/USER_NAME/AppData/Local/Packages/CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc/LocalState/rootfs/etc/environment

PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0

0

Com o Windows 10 Insider atual (toque rápido: Windows 10 build 19025.1), você pode montar sua distribuição como uma unidade de rede. O WSL é acessível wls$, pois o caminho é o seu nome de distribuição ( wsl -l -q).

Por exemplo net use Z: \\wsl$\Debian /PERSISTENT:YES


Tem certeza de que isso é limitado ao WSL2? Eu pensei que em 1903 você pudesse explorar o conteúdo da estrutura de arquivos WSL de dentro do Windows. Criar uma localização de rede de mapa teria sido possível com essa alteração.
Ramhound 16/11

Como escrevi, não tenho certeza sobre o WSL2. Existem dois pontos: introdução do WSL2 (da compilação 18432) e distribuição apoiada pelo WSL 2. Esse recurso aparece junto com o WSL2 e espero que funcione com qualquer distribuição.
potro

1909 (WSL2) é 18363.476, não 18432 (Visualização privilegiada 20H1), a menos que você esteja dizendo que isso é apenas nas compilações 20H1?
Ramhound 16/11

-1

No Bash, para visualizar o diretório atual no Windows File Explorer, basta digitar:

explorer .

Não deixe de fora o "." Isso abrirá o Windows Explorer na pasta atual e você poderá ver onde está tudo em relação ao restante do seu sistema Windows.


Obrigado pela contribuição, mas que só funciona no Bash, não no WSL (WIndows Subsystem for Linux), que é o objetivo desta pergunta. Aconselho você a excluir sua resposta ou ela poderá sofrer uma redução de votos.
rmcsharry 25/04

Isso não funciona na WSL
Nicolai Anton Lynnerup 22/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.