
Tengo la impresión de que si incluyo la línea
#!/bin/bash
al comienzo de mi archivo, será reconocido como un script bash que puedo ejecutar con solo
file.sh
en lugar de
sh file.sh
Pero en mi caso, file.sh
da algo así como test.sh
da test.sh: command not found
. ¿Porqué es eso?
ACTUALIZAR
Noto que necesito usar ./
. ¿Pero pensé que buscaría en el directorio actual de todos modos?
./test.sh
Respuesta1
Primero debes asegurarte de que el archivo sea ejecutable:
chmod +x file.sh
Y luego, para ejecutarlo, debe colocarlo en su RUTA, es decir, uno de los directorios de archivos que el sistema operativo busca cuando busca archivos para ejecutar, que puede encontrar con echo $PATH
, o debe escribir:
./file.sh
En lugar de simplemente escribir file.sh
.
Puedes simplemente escribir file.sh
, si está en tu RUTA, lo cual recomiendo. Un buen lugar está en ~/bin
. Cree esa carpeta si no está allí y, en Ubuntu, se agregará a su ruta cuando inicie sesión.
Respuesta2
Debe iniciarlo con ./file.sh, porque el directorio actual no está en la RUTA.
Si esto no es suficiente, porque se perdió lo que frabjous sugiere, chmod a+x
debe iniciar programas que comiencen con un shebang #!/bin/bash
con
bash file.sh
no
sh file.sh
incluso si sh es un enlace simbólico a /bin/bash.
El shell comprueba cómo se invocó y puede invocarse para sh
actuar en modo compatible, por lo que puede fallar al manejar algunos bashismos, que funcionarían si se invocaran como bash file.sh
.
Ese no era tu problema, pero podría convertirse en uno si no conoces estas sutiles distinciones.