¿Cuál es el directorio de inicio en el subsistema de Windows para Linux?

87

Cuando comienzo bashen Windows Subsystem para Linux, me deja en el directorio

/mnt/c/Users/<username>

Cuando veo lseste directorio, veo los directorios Desktop, Documentsetc. que puedo ver C:\Users\<username>usando el Explorador de archivos de Windows. Como aquí es donde bashcomenzó el programa, esperaba que este fuera mi directorio de inicio, pero cuando escribocdcd ~ escribo o me llevan a

/home/<username>

que contiene mi archivo .bashrc, .profileetc. que esperaría encontrar en mi directorio de inicio en un cuadro de Linux. Además, entrandocd ../.. desde aquí puedo ver los directorios bin, etcy así sucesivamente, nuevamente como se esperaba en un cuadro de Linux.

Tengo dos preguntas con respecto a todo esto:

  1. ¿Qué se /mnt/c/Users/<username>compara exactamente conC:\Users\<username> ? Parece que son uno en el mismo --- entonces, ¿qué es /mnt/c/?
  2. ¿Cómo puedo ver los archivos /home/<username>usando el Explorador de archivos de Windows? No es que realmente quisiera --- Solo estoy tratando de tener una idea de cómo Windows está organizando este Subsistema para Linux.
bcf
fuente

Respuestas:

103

Para 2: la ruta actual ahora está relacionada con la distribución que ha instalado desde Microsoft Store en lugar de una ruta global. Entonces, para Ubuntu ahora se encuentra en:

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

Supongo que las otras distribuciones estarán en una ubicación similar en sus respectivas carpetas en:

%LOCALAPPDATA%\Packages\
Michael Bond
fuente
11
¿Alguien más encuentra esta práctica inquietante? ¿No se supone que mi carpeta HOME es el ÚNICO lugar seguro para MIS datos dentro de un repositorio? Con este enfoque, un repositorio roto y reinstalar las mangueras MIS DATOS sin ningún intento de protegerlo Y está oculto cuando ya tengo un REAL / hogar. ¿Por qué no persisten los datos allí? Esto es aún más peligroso porque ahora se nos anima a probar / usar / intercambiar distribuciones (WLinux). Realmente se siente como si alguien no hubiera pensado en todo esto.
rainabba
En mi caso (1809) la carpeta se llama CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
jao
2
Nota importante: aún no debe hurgar en los archivos de Linux con las herramientas de Windows. Ver: blogs.msdn.microsoft.com/commandline/2016/11/17/… (ver también la publicación del blog en sí)
coltoneakins
fantástico. Otra razón por la que git para windows / mingw todavía funciona mejor ... mucho más pensamiento puesto en las cargas de trabajo diarias reales. ¿hay alguna manera de reasignarlo correctamente?
enorl76
1
@rainabba A primera vista, estoy de acuerdo, pero después de pensarlo, todavía elijo usar Windows en lugar de Ubuntu completo. Como tal, estoy tratando a WSL como una forma de acceder a las herramientas de Linux, pero sigo tratando a mi sistema de archivos de Windows como el ciudadano de primera clase. Entonces /mnt/c/es donde guardo todo en WSL. Me encantaría que WSL se invirtiera a LWS; lo que significa que sería increíble si todos estuviéramos ejecutando Ubuntu con Linux Subsystems para Windows para ejecutar una copia completa de Windows 10 integrada en Ubuntu. Lo sé, eso sería mucho más difícil, pero uno puede soñar.
Chev
29
  1. /mnt/ces exactamente lo mismo que C:\. Es solo la sintaxis para llegar a ella desde WSL.
  2. Busque en C:\Users\<username>\AppData\Local\Lxss\rootfs.
Joseph Sible-Reinstate a Monica
fuente
8
Advertencia: blogs.msdn.microsoft.com/commandline/2016/11/17/… ese es el lugar, sí, pero no cambie nada.
chx
66
A partir de 2018, esta respuesta ya no es válida. Ver la respuesta de @ MichaelBond.
dr01
11
Ahora que se ha ido a C:\Users\[USERNAME]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_[CODE]\LocalState\rootfs\ Usted puede ser consciente de lo mal si edita /manualmente
mementototem
para acceder fácilmente a través de copy-pasta, `% LOCALAPPDATA% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
ramita
Tenga en cuenta que la carpeta lxss estará oculta en el Explorador de archivos a menos que desmarque "Opciones de carpeta> Ver: Configuración avanzada: Ocultar archivos protegidos del sistema operativo (recomendado)". Pero aunque esté oculto, puede abrir la carpeta en el Explorador de archivos si lo ingresa en la ruta de la carpeta.
Daryn
18

Sobre el sistema de archivos montado en /mnt/c

  1. ¿Qué es exactamente / mnt / c / Users / en comparación con C: \ Users \? Parece que son uno en el mismo --- entonces, ¿qué es / mnt / c /?

A diferencia de Windows, Linux (y los otros sistemas basados ​​en Unix) usan una única estructura de carpetas independiente de la cantidad de discos que tenga. Si tiene varios discos, todos estos discos deben estar montados en la estructura de carpetas en algún momento.

  • Por lo general, todos los discos (diferentes a los utilizados para iniciar el sistema) se montan en una carpeta llamada /mnto/media

WSL tiene un tipo especial de sistema de archivos llamado DrvFS que le da acceso a los discos utilizados en Windows. Puede usar DrvFS para montar, no solo su sistema de archivos de Windows, sino también discos de red y otros tipos de medios.

  • En WSL, por defecto, el C:disco en Windows está montado bajo/mnt/c
  • Si tiene otro disco, por ejemplo, un D:disco en Windows, se montará debajo de/mnt/d

Los archivos que puede ver /mnt/cson los mismos que tiene C:. Si modifica algún archivo, también obtendrá los cambios en las ventanas.

Puede usar el mountcomando para acceder a otros tipos de medios (por ejemplo, unidades extraíbles o recursos compartidos de red).


Sobre la ubicación de /home/<username>

  1. ¿Cómo puedo ver los archivos en / home / usando el Explorador de archivos de Windows? No es que realmente quisiera --- Solo estoy tratando de tener una idea de cómo Windows está organizando este Subsistema para Linux.

En WSL, todo el sistema de archivos de Linux se encuentra en una carpeta de Windows. La ubicación de la carpeta depende de la versión de Windows y de la distribución WSL que esté utilizando.

  • Las versiones iniciales de WSL almacenan el sistema de archivos de Linux en%LOCALAPPDATA%\Lxss\rootfs
  • Las distribuciones WSL instaladas desde la Tienda Windows , comenzando en Windows Build 16215 (mediados de 2017), usan una carpeta como %LOCALAPPDATA%\Packages\...\LocalState\rootfs. El nombre del paquete varía según la distribución (por ejemplo, es diferente para Ubuntu que para Debian)
  • Las distribuciones de Linux instaladas usando otras herramientas , como lxRunOffline o WSL-DistroLauncher pueden almacenar el sistema de archivos de Linux en cualquier ubicación.

Puede marcar muchas opciones para conocer la ubicación de la carpeta WSL . Por ejemplo, creo que la opción más fácil es usar lxRunOffline para conocer la carpeta de instalación.

## 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

Una vez que conoce la ubicación de la carpeta de instalación, se /home/<username>encuentra debajo <installation folder>\rootfs\home\username.

  • Por ejemplo, si su carpeta de instalación es c:\wsl\ubuntu
  • el /home/<username>esta enc:\wsl\ubuntu\rootfs\home\username

NOTA: Tanto Linux como Windows almacenan permisos de archivos de diferentes maneras. Hoy en día, el WSL DrvFS almacena los permisos de Linux como Streams (metadatos) adjuntos a los archivos que puede ver en Windows. Microsoft no recomienda modificar archivos linux usando programas de Windows. Es posible que algunas aplicaciones de Windows dañen los permisos de Linux sin previo aviso.

Jaime
fuente
5

Supongo que podría depender de la compilación de Windows en la que se encuentre, pero para mí en 2018 en Windows 10 Pro de 64 bits, la versión 1709 (compilación del SO 16299.522) y también la versión 1803 (compilación del SO 17134.165) [una actualización de Windows ocurrió irónicamente como yo estaba escribiendo esto] la ubicación sigue siendo:

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

El truco es que cuando estés en C:\Users\<username>\AppData\Localno verás una lxsscarpeta (a menos que tengas desmarcado "Ocultar archivos protegidos del sistema operativo (recomendado)" en las opciones de tu carpeta).

Sin embargo, solo agregue \lxssen la barra de direcciones del explorador de Windows y lo llevará a la carpeta.

(Tenga en cuenta que no tenía %LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscni nada similar que se mencionara en la respuesta de Michael Bonds)

Actualizar

Resulta que hay WSL heredado, que es lo que había instalado. Ahora WSL se proporciona a través de una aplicación de la tienda de Microsoft. Hay versiones para Ubuntu 18.04 LTS y ahora también algunos otros sabores de Linux (por ejemplo, Debian). Si desea estar actualizado, puede desinstalar WSL heredado e instalar la versión de la tienda de Microsoft .

La ubicación de su carpeta de inicio dependerá de cuál de estos tipos de WSL haya instalado.

Usuario
fuente
4
  1. Usando la consola WSL bash, en su directorio de inicio, cree un archivo con un nombre específico arbitrario como "test_here.txt".
  2. Luego, usando el Explorador de Windows, usando el cuadro de búsqueda, busque el archivo test_here.txt.
  3. En el archivo encontrado> clic derecho> Abrir ubicación del archivo.
Ellis
fuente
Intenté esto No funciona No veo el archivo en la búsqueda. Sin embargo, si suelto el archivo en / mnt / c / Users / <username> obviamente funciona.
Eamonn Kenny
Me temo que probé el WSL pero ya no lo uso. No lo encontré muy útil. (Uso cygwin a diario, en lugar de WSL, y lo encuentro muy útil.) No puedo verificarlo más, lo siento;)
Ellis
La búsqueda de rootfs funciona. A continuación, puede navegar por el sistema de archivos unbuntu desde allí.
Tigr
2

Cuatro pasos para Windows 10 Pro para anclar su Debian / Ubuntu / OpenSUSE $ HOME al menú de inicio de Windows:

  1. Desde el menú de inicio, inicie el Explorador de archivos
  2. En la barra de direcciones (no en la barra de búsqueda) escriba% LOCALAPPDATA%.
  3. En la barra de búsqueda, busque su nombre de directorio $ HOME, en mi caso fue ekenny. Habrá alrededor de 3 versiones de esto, pero desea la que tenga un camino realmente largo.
  4. Haga clic derecho en su directorio de inicio y haga clic en "Anclar al inicio".

Ahora tiene su directorio de inicio anclado a su menú de inicio. Intenté crear un acceso directo pero eso no va a ninguna parte inteligible.

Eamonn Kenny
fuente
0

Solo necesitaba encontrar /etc/environmentusando Ubuntu 16.04 buscando en el almacenamiento NTFS de Windows 10. Lo encontré aquí:

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • Cambié /mnt/c/a la C:\nomenclatura de Windows.
  • También cambié todas las ocurrencias de /a \por la misma razón.
  • Debe reemplazarlo USER_NAMEcon su nombre de usuario de Windows.
  • Tuve que usar sudo -H Nautiluspara obtener permisos para ver los archivos de usuario almacenados en WSL.
  • NUNCA actualice sus archivos de Linux en WSL utilizando una aplicación de Windows. Corromperá sus datos de Linux .

Desde el lado de Linux (Ubuntu 16.04) la nomenclatura sería:

$ 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
WinEunuuchs2Unix
fuente
0

Con Windows 10 Insider actual (Anillo rápido: Windows 10 build 19025.1) puede montar su distribución como una unidad de red. Se puede acceder a WSL wls$, la ruta es su nombre de distribución (wsl -l -q ).

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

potro
fuente
¿Estás seguro de que esto se limita a WSL2? Pensé que a partir de 1903 podría explorar el contenido de la estructura de archivos WSL desde Windows. La creación de una ubicación de red de mapa habría sido posible con ese cambio.
Ramhound
Como escribí, no estoy seguro acerca de WSL2. Hay dos puntos: la introducción de WSL2 (desde la compilación 18432) y la distribución respaldada por WSL 2. Esta característica aparece junto con WSL2 y espero que funcione con cualquier distribución.
potro
1909 (WSL2) es 18363.476, no 18432 (Insider Preview 20H1) a menos que esté diciendo, ¿esto es solo en versiones 20H1?
Ramhound
-1

En Bash, para ver el directorio actual en el Explorador de archivos de Windows simplemente ingrese:

explorer .

No deje de lado el "." Esto abrirá el explorador de Windows en la carpeta actual y podrá ver dónde está todo en relación con el resto de su sistema de Windows.

Gary Barrett
fuente
Gracias por la contribución, pero eso solo funciona en Bash, no en WSL (Windows Subsystem for Linux), de eso se trata esta pregunta. Le aconsejaría que elimine su respuesta o puede ser rechazada.
rmcsharry
Esto no funciona en WSL
Nicolai Anton Lynnerup