¿Cómo ejecutar un script de shell sin sh o bash en el subsistema de Windows para Linux?

¿Cómo ejecutar un script de shell sin sh o bash en el subsistema de Windows para Linux?

Estoy ejecutando ubuntu usando WSL (Subsistema de Windows para Linux). He escrito un script de shell simple a continuación. Cuando lo ejecuto me da el siguiente error.

#! /bin/sh
# "test script"
echo "hello world"

test.sh: comando no encontrado

Pero se ejecuta correctamente si ejecuto el comando usando sh test.sho bash test.sh.

Entonces, ¿hay alguna forma de ejecutarlo sin shLinux nativo?

Respuesta1

Siempre puedes ejecutarlo como ./test.sh.

./se resuelve en el directorio actual que termina en /, por lo que efectivamente está proporcionando la ruta completa a su secuencia de comandos.

Just test.shfuncionará sólo si su directorio actual está en formato $PATH. Esto no es exclusivo de WSL.

Respuesta2

Lo esencial:

Primero:
Crea un script con un "shebang" en la primera línea, esto define si es, por ejemplo, bash, python o perl el que comprende el resto del archivo de texto.

Por lo general, esto se ve así: #!/bin/bash, #!/bin/env pythono algo así

Segundo:
Asegúrese de que el archivo tenga el xindicador -para una selección de user, groupy/o others ( man chmodpara más detalles) mediante el uso de, por ejemplo
chmod 755 script_filename

Tercero:
Colóquelo en una carpeta (directorio) de su disco duro, en cualquier medio de almacenamiento montado permanentemente.
Esta mkdir -p $HOME/bin/podría ser una buena idea para asuntos personales.

Cuatro:
asegúrese de que la carpeta esté indicada en echo $PATH, por ejemplo, agregando una línea que contenga
export PATH=$PATH:/absolute/path/to/folder/
en$HOME/.bash_aliases

Con todo esto en su lugar, su script será accesible (ejecutable):en un shell recién lanzado (para que el punto 4 surta efecto)- escribiendo únicamente el nombre en el símbolo del sistema bash.
(Nota: WSL, al menos en su primera encarnación, es/era un Ubuntu de Canonical)


Mas detalle:https://tldp.org/guides.html- en las guías de Bash

información relacionada