¿Por qué ejecutar un script .sh de Visual Studio abre el archivo en lugar de ejecutarlo?

Estoy tratando de ejecutar un script .sh (que en sí se supone que arranca una serie de pruebas de unidad en el frasco) desde dentro de Visual Studio Code corriendo en Windows 10 y por alguna razón no importa lo que lo pruebe sólo abre el archivo para editar en lugar de ejecutar realmente el archivo.

Este es el comando exacto que estoy escribiendo:

C:\Users\my.user\MyRepo>.\scripts\run-unit-tests.sh

Aquí están mis notas:

  1. Esta es una nueva instalación de Windows 10 donde creo que he habilitado WSL2

  2. No estoy completamente familiarizado con hacer el desarrollo desde dentro de Windows (que viene de un fondo Ubuntu/Linux)

  3. Mi objetivo es ejecutar este script desde dentro de la terminal construida en el código VS, sin embargo también he intentado ejecutarlo desde un impulso de cmd y también desde Powershell y ambos también resultan en abrir el archivo en el código VS.

Adición: más notas:

En realidad tengo dos máquinas de ventanas. uno es mi máquina personal, el otro proporcionado por mi trabajo. Por cualquier razón este archivo funciona bien en mi máquina personal pero no en mi máquina de trabajo. También el script bash está en un repo que fue creado por otros en mi empresa así que estoy seguro de que esto puede ser hecho para funcionar sin modificar el archivo .sh en sí.

Pregunta hecha hace 3 años, 4 meses, 28 días - Por apiartisan


3 Respuestas:

  • Me di cuenta de lo que estaba pasando.

    En las ventanas hay asociaciones de archivos predeterminadas. El mío se creó para ejecutar Visual Studio Code para la extensión de archivo .sh. Además, las ventanas no saben cómo manejar archivos .sh por defecto. Es probable que haya muchas correcciones potenciales para este sin embargo el que funcionó fue para mí para volver a asociar la extensión de archivo .sh para abrir con Git Bash que también me había instalado en esta máquina.

    Gracias a todos los que intentaron ayudar.

    Respondida el Dec 17, 2020 a las 19:21 - por logiclinguist

    Votos positivos: 0 | Votos negativos: 0

  • El problema que estás experimentando parece estar relacionado con la configuración por defecto de Visual Studio Code en Windows. Por defecto, Visual Studio Code abrirá un archivo shell (.sh) en lugar de ejecutarlo directamente cuando se hace doble clic en él o se intenta ejecutar desde la terminal integrada. Para ejecutar un script .sh en Visual Studio Code en Windows, puedes intentar lo siguiente:

    • Habilitar la ejecución de scripts en PowerShell:
    - Abre PowerShell como administrador y ejecuta el comando `Set-ExecutionPolicy RemoteSigned` para permitir la ejecución de scripts.
    • Ejecutar el script .sh directamente desde la terminal de Visual Studio Code:
    - En Visual Studio Code, abre la terminal integrada (Ctrl + `).
    • Navega hasta la ubicación del script .sh con el comando `cd ruta/del/script`.
    • Ejecuta el script con el comando `./nombre_del_script.sh`.
    • Utilizar el subsistema de Windows para Linux (WSL) en Visual Studio Code:
    - Si has habilitado WSL 2 en tu Windows 10, puedes intentar abrir la carpeta del proyecto desde WSL en Visual Studio Code.
    • En Visual Studio Code, selecciona "File" > "Open Folder" y navega hasta la carpeta del proyecto en la distribución de Linux de WSL.
    • Intenta ejecutar el script .sh desde la terminal de WSL en Visual Studio Code.

    Con estas recomendaciones, espero que puedas ejecutar con éxito el script .sh en Visual Studio Code en Windows. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 18, 2020 a las 19:22 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles soluciones:

    1. Verifica la asociación de archivos .sh:

    Abre la Configuración de Windows (Win + I). Ve a Aplicaciones > Aplicaciones predeterminadas > Elegir aplicaciones predeterminadas por tipo de archivo. Desplázate hacia abajo hasta ".sh" y asegúrate de que esté asociado con "Bash".

    2. Actualiza WSL2:

    Abre el símbolo del sistema como administrador. Ejecuta el siguiente comando: wsl --update Reinicia tu ordenador.

    3. Comprueba la versión de Bash:

    Abre la terminal de Visual Studio Code. Ejecuta el comando: bash --version Deberías ver "WSL 2" en la salida.

    4. Verifica la variable de entorno PATH:

    Abre el símbolo del sistema como administrador. Ejecuta el siguiente comando: echo %PATH% Asegúrate de que la ruta "/usr/local/bin" esté incluida en la variable PATH. Si no, añádela.

    5. Considera las diferencias entre máquinas:

    Como has mencionado, el script funciona en una máquina de Windows pero no en otra. Comprueba las siguientes diferencias entre las máquinas: Versión de Windows 10 Versión de WSL2 Configuración de la asociación de archivos .sh Variables de entorno

    Solución adicional (específica para el script):

    Comprueba que el script .sh tenga los permisos de ejecución correctos. Asegúrate de que el script utilice la sintaxis correcta para Windows (por ejemplo, utiliza "\n" para los saltos de línea en lugar de "n"). Considera utilizar una herramienta de emulación de terminal como Git Bash o Windows Terminal Preview, que pueden proporcionar un mejor soporte para la ejecución de scripts .sh.

    Respondida el Dec 18, 2020 a las 19:30 - por Gemini

    Votos positivos: 0 | Votos negativos: 0