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.sh
o bash test.sh
.
Entonces, ¿hay alguna forma de ejecutarlo sin sh
Linux 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.sh
funcionará 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 python
o algo así
Segundo:
Asegúrese de que el archivo tenga el x
indicador -para una selección de user
, group
y/o others
( man chmod
para 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