O que é o diretório inicial no Windows Subsystem para Linux?

20

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

/mnt/c/Users/<username>

Quando eu ls deste diretório, eu vejo os diretórios Desktop , Documents , etc. que eu posso ver estão em C:\Users\<username> usando o Windows File Explorer. Como esse é o ponto em que o programa bash foi iniciado, esperava que esse fosse meu diretório pessoal, mas quando digito cd ou cd ~ , sou levado para

/home/<username>

que contém meu arquivo .bashrc , .profile etc. que eu esperaria encontrar em meu diretório home em uma caixa Linux. Além disso, digitando cd ../.. daqui, posso ver os diretórios bin , etc e assim por diante, novamente como esperado em uma caixa Linux.

Eu tenho duas perguntas sobre tudo isso:

  1. O que exatamente é /mnt/c/Users/<username> em comparação com C:\Users\<username> ? Parece que eles são um no mesmo --- então o que é /mnt/c/ ?
  2. Como posso visualizar os arquivos em /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.
por bcf 04.03.2017 / 02:59

5 respostas

23

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

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

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

%LOCALAPPDATA%\Packages\
    
por 29.12.2017 / 13:07
14
  1. /mnt/c é exatamente o mesmo que C:\ . É apenas a sintaxe para obter isso da WSL.
  2. Procure em C:\Users\<username>\AppData\Local\Lxss\rootfs .
por 04.03.2017 / 03:59
4
  1. Usando o console bash do WSL, em seu diretório inicial, 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 > Abrir localização de arquivos.
por 15.01.2018 / 13:07
3

Sobre o sistema de arquivos montado em /mnt/c

  1. What exactly is /mnt/c/Users/ compared with C:\Users\? It seems they are one in the same---so what is /mnt/c/?

Em contraste com o Windows, o Linux (e os outros sistemas baseados no 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 devem ser montados na estrutura de pastas em algum momento.

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

O WSL tem um tipo especial de sistema de arquivos chamado DrvFS que dá acesso aos discos usados nas janelas. Você pode usar o DrvFS para montar, não apenas o sistema de arquivos do Windows, mas também os discos de rede e outros tipos de mídia.

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

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

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

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

  1. How can I view the files in /home/ using the Windows File Explorer? Not that I'd really ever want to---I'm just trying to get a feel for how Windows is organizing this Subsystem for Linux thing.

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

  • Versões iniciais do WSL armazenam o sistema de arquivos linux em %LOCALAPPDATA%\Lxss\rootfs
  • As distribuições WSL instaladas na Windows Store , começando no 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 do que para o Debian)
  • Distribuições Linux instaladas usando outras ferramentas , como lxRunOffline ou O WSL-DistroLauncher pode 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, eu acho que a opção mais fácil é usar lxRunOffline para saber 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 que você souber o local da pasta de instalação, o /home/<username> estará abaixo de <installation folder>\rootfs\home\username .

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

NOTA: O Linux e o Windows armazenam permissões de arquivo de diferentes maneiras. 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 do Linux usando programas do Windows. É possível que alguns aplicativos do Windows danificar as permissões do Linux sem aviso prévio.

    
por 09.08.2018 / 14:58
1

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

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

O truque é quando você está em C:\Users\<username>\AppData\Local você não verá uma pasta lxss (a menos que você tenha desmarcado "Ocultar arquivos protegidos do sistema operacional (Recomendado)" nas suas opções de pasta).

No entanto, basta anexar \lxss na barra de endereço do Windows Explorer e você será direcionado para a pasta.

(Note que eu não tem um %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc ou algo semelhante que foi mencionado na resposta de Michael Bonds)

    
por 16.07.2018 / 10:06