Página principal » cómo » Cómo ejecutar comandos de Linux desde fuera del shell Bash en Windows 10

    Cómo ejecutar comandos de Linux desde fuera del shell Bash en Windows 10

    Windows 10 incluye un "Subsistema de Windows para Linux" subyacente para ejecutar aplicaciones de Linux, pero solo es accesible a través del shell Bash. Sin embargo, hay una manera de ejecutar aplicaciones de Linux sin iniciar primero una ventana Bash.

    Esto es posible gracias a la bash -c mando. Úselo para ejecutar comandos de Linux a través de Símbolo del sistema y PowerShell, o incluso crear un acceso directo de escritorio que ejecute un comando o programa de Linux cuando se inicie.

    Actualizar: Si tiene varios entornos Linux instalados, puede usar el comando wslconfig para elegir el entorno Linux predeterminado. También hay una forma de ejecutar comandos en entornos Linux específicos.

    Cómo ejecutar comandos de Linux en el símbolo del sistema o PowerShell

    Antes de hacer algo de esto, deberás instalar y configurar el shell Bash de Windows 10. Después de hacerlo, puede abrir una ventana del símbolo del sistema y ejecutar el siguiente comando para ejecutar el software de Linux fuera de una ventana Bash:

    bash -c "comando"

    Por ejemplo, digamos que desea instalar el paquete emacs a través de apt-get. Ejecutarías el siguiente comando en una ventana de línea de comandos:

    bash -c "sudo apt-get install emacs"

    Cuando uses bash -c, Windows lanzará un shell Bash en segundo plano y le pasará el comando. El comando se ejecutará hasta que esté listo y luego se cerrará, junto con el shell Bash. Cualquier salida de terminal que ejecute el comando actual aparecerá directamente en la ventana del símbolo del sistema, en lugar de una ventana de shell Bash separada.

    Este truco también le permite ejecutar comandos de Linux en PowerShell, al igual que ejecutaría un ejecutable normal de Windows. Puede hacerlo ejecutando directamente el archivo .exe como lo haría en una ventana del símbolo del sistema, o mediante cualquier otro método para ejecutar ejecutables en PowerShell.

    bash -c "uname -a"

    Al igual que con una ventana de símbolo del sistema, la salida del comando aparecerá directamente en PowerShell. Estos métodos se pueden usar para agregar comandos de Linux a un archivo por lotes o un script de PowerShell, también.

    Cómo ejecutar comandos de Linux desde el cuadro de diálogo Ejecutar o el menú Inicio

    Este truco también funciona para ejecutar comandos desde el cuadro de diálogo Ejecutar, el menú Inicio o cualquier lanzador de aplicaciones de terceros..

    Por ejemplo, para iniciar vi desde el cuadro de diálogo Ejecutar, presionaría Windows + R en su teclado y luego ejecutaría el siguiente comando:

    bach -c "vi"

    El editor de texto vi aparecerá en su propia ventana..

    Esto también funciona para el menú Inicio, por lo que puede escribir el mismo comando directamente en el menú Inicio y presionar Entrar para ejecutarlo como un comando.

    Cómo ejecutar comandos de Linux con un acceso directo de escritorio

    los bash -c El comando también permite lanzar aplicaciones de Linux a través de un acceso directo de escritorio. Por ejemplo, supongamos que desea iniciar el editor de texto vi a través de un acceso directo del escritorio. Haga clic con el botón derecho en el escritorio, seleccione Nuevo> Nuevo acceso directo e ingrese el siguiente objetivo:

    bash -c "vi"

    Ahora puede guardar el acceso directo y lanzará vi cuando haga doble clic en él.

    Curiosamente, este truco también funciona para lanzar aplicaciones gráficas de Linux desde un acceso directo de escritorio. Instale un servidor X y configure las aplicaciones gráficas de escritorio de Linux. Debes poder crear accesos directos para lanzarlos directamente.

    Sin embargo, tendrías que lanzarlos así:

    bash -c "DISPLAY =: 0 comando"

    Si bien puede ejecutar comandos de Bash desde cualquier otro lugar de Windows, no hay manera de ejecutar software de Windows o ejecutables directamente desde una ventana de shell de Bash..