Sobre Bash en Windows 10

A petición de Olea, copio aquí el mensaje que puse en Telegram. Insisto en puntualizar que el objetivo de Microsoft con esto es tener contento a los desarrolladores webs, a los que igual les vale y para el uso que yo le doy se queda más corto.

“a los del cacareado bash-w10 se les ha escapado por ahí que el interix/sfu estaba bastante desactualizado y abandonadillo y que lo desecharon y empezaron de cero porque nadie se veía capaz de meterle mano (no debía quedar nadie del equipo que lo programó en su día)
Dicho esto a mi el bash este para w10 me ha decepcionado un poco.
La primera limitación gorda es que tienes una instancia por usuario de windows. Si es para desarrolladores, lo suyo es poder instanciar varios, en uno pongo unas librerías , en otro pruebo otra versión de python, etc. En la era de los contenedores se queda corto
Por otro lado, entiendo que se le haga el culo pepsi-cola a los desarrolladores web, que a día de hoy reconozco que son mayoría. Pero si te vas a C, nacl y cosasas extrañas empiezan a salir las miserias: no hay soporte alsa para sonido (lógico en web), no hay soporte librerias 32 bits y en cuanto una system call se sale de lo normal, no está implementada
La parte linux y la parte win están totalmente separadas, ni por asomo llega al nivel de SFU
Por último, solo lo soportan para desarrolladores, es decir no lo plantean para que lleves tus desarrollos o scripts a producción, lo cual me lleva a pensar que quedará como juguete y no sé hasta que punto lo evolucionarán
¿hay premio por soltar un tocho?”

1 me gusta

¿Y no es mejor utilizar Cygwin[1]? Puedes tener Bash o cualquier otra, tantas instancias como quieras, y para 32 o 64 bits.


[1]: Cygwin: https://www.cygwin.com/.

Se supone que al ser nativo, irá mejor, no?

Tengo una duda principalmente con este punto. ¿Por qué? Yo soy desarrollador web, trabajo normalmente desde Linux (Debian/Ubuntu, según se tercie) y normalmente mi trabajo no tiene bash como un pilar principal.

La gente está hablando y se refiere a este sistema normalmente como “bash en w10” porque es el comando que usan desde cmd o powershell (las interfaces de línea de comando tradicionales en windows) , pero no se trata solo de bash.
Por debajo (resumido malamente y sin entrar en el detalle de la arquitectura) las llamadas al kernel de linux son redirigidas a llamadas al kernel de windows. Sobre eso instalan una distribución completa de linux (que puedes actualizar con los comandos normales) y cuyo punto de entrada es bash (como en las mayoría de los linux, aunque aquí sin hacer login).
Por eso he dicho que es un bash, pero no lo es. Desde esa bash puedes lanzar otras shells y todos estos programas que comentas, bc, vim etc.
Una de las diferencias con cygwin, es que no tienes el ejecutable recompilado y adaptado al entorno cygwin. Aquí usas el mismo ejecutable nativo de linux (podrías incluso compartir disco con un linux nativo y ambos usarían los mismos archivos). Eso sí, te funcionará si las llamadas al kernel estén soportadas.

Microsoft lo publicita como una ayuda a desarrolladores web que usen python, ruby, php, etc. y que normalmente tenían que salir de windows y usar linux para estas cosas . Ahora pueden estar con su editor favorito y su gestor de ventanas windows , y usar los paquetes linux. Ese es su objetivo. Si estás contento editando en linux, no te aporta nada.

Pero
a) no van a dar soporte a otros tipos de cosas. Si no te funciona algo raro, no van a arreglarlo.
b) no buscan que se monten sistemas en producción con esto. De hecho, las licencias PRO para servidores no incluyen esta capa de emulación de syscalls al kernel. Así que no os preocupéis por que vuestros scripts se tengan que adaptar a estos entornos

besos: :kiss::kiss::kiss:

Pues parece que la cosa avanza

Pasan de ubuntu 14 a ubuntu 16, mejoran la comunicación entre los procesos win y los linux (ya se ven los procesos linux en el administrador de tareas, se mejora lo de editar y compartir ficheros entre los “dos” sistemas) y han implementado más syscall lo cual incrementa el número de aplicaciones linux compatibles

Y alguien se ha currelado un script para cambiar entre distintas distribuciones de Linux y no usar la Ubuntu de serie

https://t.co/liLLGPIeSU

Pero puedo ver mis particiones ext4 con eso??

Los discos de tu w10 aparecen en /mnt
Ojo, que entran en juego temas de capa de emulación del sistema de archivos. Es decir, si ext4 tiene alguna característica raruna, puede que no se emule (metadata, enlaces, permisos , acls, …)

Repito que Microsoft orienta esto a desarrolladores, los cuales con que se pueden copiar archivos entre la capa win y la capa Linux y se puedan modificar con su editor favorito (ya sea en win o en Linux) van servidos.

puuuf, ya les vale… En fin, menos da una piedra

Es para lo que es. No van a dedicar recursos a resolver un problema que no tienen dado su enfoque.

Además, piensa que el rootfs (y el home) de la distro que ejecutas, ya está en NTFS y se emula el fs de Linux. Si quieres hacer algo que precise de NTFS, haz lo que necesites desde W10 de forma nativa ¿para que arrancar W10 y desde allí entrar en el Linux emulado y volver a acceder a la partición nativa de w10?

1 me gusta

Además de que Microsoft en ningún momento pretende que tengas Linux en dual boot, si te da Bash en Windows precisamente es para que dependas menos de Linux.

1 me gusta