2017-03-04 01:59:01 +0000 2017-03-04 01:59:01 +0000
113
113

O que é o directório home no Subsistema Windows para Linux?

Quando inicio bash no Subsistema Windows para Linux, ele deixa-me cair no directório

/mnt/c/Users/<username>

Quando inicio ls neste directório, vejo os directórios Desktop, Documents, etc. que posso ver estão em C:\Users\<username> usando o Explorador de Ficheiros do Windows. Como foi aqui que o programa bash começou, esperava que este fosse o meu directório home, mas quando digito cd ou cd ~ sou levado para

/home/<username>

que contém o meu ficheiro .bashrc, .profile etc. que esperaria encontrar no meu directório home numa caixa Linux. Além disso, inserindo cd ../.. a partir daqui posso ver os directórios bin, etc e assim por diante, novamente como esperado numa caixa de Linux.

tenho duas perguntas sobre tudo isto:

  1. o que é exactamente /mnt/c/Users/<username> em comparação com C:\Users\<username>? Parece que são um no mesmo… então o que é /mnt/c/?
  2. Como posso ver os ficheiros em /home/<username> usando o Explorador de Ficheiros do Windows? Não que eu realmente quisesse… Só estou a tentar ter uma ideia de como o Windows está a organizar este subsistema para Linux.

Respostas (11)

132
132
132
2017-12-29 12:07:21 +0000

Para 2: O caminho actual está agora relacionado com a distribuição que tem instalado a partir do Microsoft Store em vez de um caminho global. Assim, para o Ubuntu, está agora localizado em:

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

Presumo que as outras distribuições estarão num local semelhante sob as suas respectivas pastas abaixo:

%LOCALAPPDATA%\Packages\
33
33
33
2017-03-04 02:59:20 +0000
  1. /mnt/c é exactamente o mesmo que C:1./mnt/c` é exactamente o mesmo que . É apenas a sintaxe para se chegar a ele a partir da WSL.
  2. Veja em C:\Users\<username>\AppData\Local\Lxss\rootfs.
21
21
21
2018-08-09 12:58:03 +0000

Sobre o sistema de ficheiros montado em /mnt/c

  1. O que é exactamente /mnt/c/Users/ em comparação com C:\Users\? Parece que são um no mesmo… Então o que é /mnt/c/?

Em contraste com o Windows, Linux (e os outros sistemas baseados em Unix) utilizam uma única estrutura de pastas independente do número de discos que possuem. Se tiver vários discos, todos estes discos devem ser montados na estrutura de pastas em algum momento.

  • Normalmente, todos os discos (diferentes dos utilizados para arrancar o sistema) são montados numa pasta chamada /mnt ou /media

WSL tem um tipo especial de sistema de ficheiros chamado DrvFS que lhe dá acesso aos discos utilizados no windows. Pode utilizar DrvFS para montar, não só o seu sistema de ficheiros windows, mas também discos de rede e outros tipos de suportes.

  • Em WSL, por defeito, o disco C: no windows é montado sob /mnt/c
  • Se tiver outro disco, por exemplo um disco D: no windows, será montado sob /mnt/d

Os ficheiros que pode ver em /mnt/c são os mesmos que tem em C:. Se modificar algum ficheiro, obterá também as alterações no windows.

Poderá usar o comando mount para aceder a outros tipos de suportes (por exemplo unidades amovíveis ou partilhas de rede).


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

  1. Como posso ver os ficheiros em /home/ usando o Explorador de Ficheiros do Windows? Não que eu realmente queira… Estou apenas a tentar ter uma ideia de como o Windows está a organizar este subsistema para Linux.

Em WSL, todo o sistema de ficheiros linux está localizado sob uma pasta Windows. A localização da pasta depende da versão do Windows e da distribuição WSL que está a utilizar.

  • Versões iniciais da WSL armazenam o sistema de ficheiros linux em %LOCALAPPDATA%\Lxss\rootfs
  • ** Distribuições WSL instaladas a partir da Loja Windows** , a partir do Windows Build 16215 (meados de 2017), use uma pasta como %LOCALAPPDATA%\Packages\...\LocalState\rootfs. O nome do pacote varia dependendo da distribuição (por exemplo, é diferente para Ubuntu do que para Debian)
  • Linux distribuições instaladas usando outras ferramentas , tais como lxRunOffline ou WSL-DistroLauncher pode armazenar o sistema de ficheiros linux em qualquer local.

Pode verificar muitas opções para saber a localização da pasta WSL . Por exemplo, penso que a opção mais fácil é utilizar 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

Uma vez conhecida a localização da pasta de instalação, a /home/<username> é inferior a <installation folder>\rootfs\home\username.

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

NOTE: Tanto o Linux como o Windows armazenam as permissões de ficheiros de diferentes maneiras. Actualmente, o WSL DrvFS armazena as permissões do Linux como Streams (metadados) anexados aos ficheiros que se podem ver no Windows. A Microsoft não recomenda a modificação de ficheiros linux utilizando programas Windows. É possível que algumas aplicações Windows danifiquem as permissões do linux sem o notar.

7
7
7
2019-02-20 18:35:13 +0000

Em Bash, para ver o directório actual no Explorador de Ficheiros do Windows, basta entrar:

explorer.exe .

Não deixe de fora o “.”.

Isto abrirá o explorador de janelas na pasta actual e poderá ver onde está tudo em relação ao resto do seu sistema Windows.

6
6
6
2018-07-16 08:06:17 +0000

Suponho que pode depender em que janelas se constrói, mas para mim em 2018 no Windows 10 Pro 64-bit, Versão 1709 (OS Build 16299.522) e também na Versão 1803 (OS Build 17134). 165) [uma actualização do windows ironicamente ocorreu quando eu estava a escrever isto] o local ainda é:

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

O truque é quando está em C:\Users\<username>\AppData\Local não verá uma pasta lxss (a menos que por acaso tenha desmarcado “Ocultar ficheiros de sistema operativo protegidos (Recomendado)” nas suas opções de pasta).

No entanto, basta anexar \lxss na barra de endereços do windows explorer e ele irá levá-lo para a pasta.

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

Update

Acontece que existe um WSL antigo que é o que eu tinha instalado. Agora a WSL é fornecida através de uma aplicação de loja da Microsoft. Existem versões para o Ubuntu 18.04 LTS e também agora alguns outros sabores de Linux (por exemplo, Debian). Se quiser estar actualizado, pode querer desinstalar a WSL antiga e instalar a versão da loja Microsoft .

Onde está a sua pasta de casa dependerá de qual destes tipos de WSL tem instalado.

4
4
4
2018-01-15 12:07:42 +0000
  1. Usando a consola bash WSL, no seu directório pessoal, crie um ficheiro com um nome específico arbitrário como “test_here.txt”.
  2. Depois, usando o Windows Explorer, usando a caixa de pesquisa, procure o ficheiro test_here.txt.
  3. No ficheiro encontrado, clicar com o botão direito do rato em {{{Abrir localização do ficheiro}.
3
3
3
2019-11-16 15:21:34 +0000

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

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

2
2
2
2019-01-11 16:56:17 +0000

Quatro passos para o Windows 10 pro para fixar o seu Debian/Ubuntu/OpenSUSE $HOME ao menu inicial do Windows:

  1. do menu inicial iniciar File Explorer
  2. Na barra de endereços (não na barra de pesquisa) digite %LOCALAPPDATA%.
  3. Na barra de pesquisa procure o seu nome de directório $HOME, no meu caso foi ekenny. Haverá cerca de 3 versões disto, mas quer a que tem um caminho realmente longo.
  4. Clique com o botão direito do rato no seu directório home e clique em “Pin to Start”.

Agora tem o seu directório de início assinalado com um alfinete no seu menu inicial. Tentei criar um atalho, mas isso não vai a lado nenhum inteligível.

0
0
0
2019-12-10 11:31:19 +0000

Se instalou a sua distribuição com Chocolatey , o caminho para o directório home é:

C:\ProgramData\chocolatey\lib\wsl-<distribution-name>\tools\unzipped\rootfs\home

Por exemplo para Ubuntu 18.04 :

C:\ProgramData\chocolatey\lib\wsl-ubuntu-1804\tools\unzipped\rootfs\home
0
0
0
2019-12-19 09:08:46 +0000

Na minha configuração (WSL Ubuntu sob o “ambiente de desenvolvimento Windows 10” descarregado de https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ) a pasta AppData foi escondida por defeito. Tinha de ser assim:

  • abrir o explorador de janelas
  • ir para `C:\Users\UserNa minha configuração (WSL Ubuntu sob o “ambiente de desenvolvimento Windows 10” descarregado de [ https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ]0x3&) a pasta AppData foi escondida por defeito. Tinha de ser assim:

  • abrir o explorador de janelas

  • ir para

  • seleccionar view no menu

  • verificar hidden items & - depois a pasta AppData aparece sob C:\Users\User

  • e encontrei a minha /home/user sob C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user (onde * é provavelmente um código local ou versão dependendo do código de alguns tipos)

& Não sei porque é que está assim escondida.

0
0
0
2019-04-15 11:34:10 +0000

Só precisava de encontrar /etc/environment usando o Ubuntu 16.04 a procurar no armazenamento do Windows 10 NTFS. Encontrei-o aqui:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • mudei /mnt/c/ para C:Só precisava de encontrar/etc/environment` usando o Ubuntu 16.04 a procurar no armazenamento do Windows 10 NTFS. Encontrei-o aqui:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • mudei /mnt/c/ para para a nomenclatura Windows. & - Também mudei todas as ocorrências de / para Só precisava de encontrar/etc/environment` usando o Ubuntu 16.04 a procurar no armazenamento do Windows 10 NTFS. Encontrei-o aqui:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • mudei /mnt/c/ para C:Só precisava de encontrar/etc/environment` usando o Ubuntu 16.04 a procurar no armazenamento do Windows 10 NTFS. Encontrei-o aqui:
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • mudei /mnt/c/ para para a nomenclatura Windows. & - Também mudei todas as ocorrências de / para pela mesma razão. & - Precisa de substituir USER_NAME pelo seu nome de utilizador Windows. & - Tive de usar sudo -H Nautilus para obter permissões para ver os Ficheiros de Utilizador armazenados na WSL. & - NUNCA actualize os seus ficheiros Linux na WSL usando uma aplicação Windows. Vai corromper os seus dados 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