Pregunta :¿Cuáles son las cosas fundamentales básicas que debo saber para ejecutar un script de shell? Además, cuando ejecuto mi script de shell, aparece el mensaje de error "Permiso denegado". ¿Cómo lo soluciono?
Respuesta :Repasemos las 4 cosas fundamentales básicas que debe saber sobre la ejecución de un script de shell.
1. Ubique el ejecutable de shell y póngalo como she-bang #!
Identifique la ruta completa de donde está instalado el shell.
$ which sh /bin/sh (or) $ which ksh $ which bash
Una vez que haya identificado la ubicación del ejecutable de shell, indíquelo como shebang (#!) en la primera línea del archivo de script de shell.
$ vim helloworld.sh #!/bin/sh echo "Hello World!"
2. Asignar permiso de ejecución al archivo Shell Script
Si no tiene permiso de ejecución en el script, recibirá el mensaje de error "Permiso denegado" como se muestra a continuación.
$ ./helloworld.sh bash: ./helloworld.sh: Permission denied
Asigne permiso de ejecución al archivo de secuencia de comandos mediante el comando chmod como se muestra a continuación.
$ chmod u+x helloworld.sh
Si desea otorgar permiso de ejecución al grupo y a otros, hágalo como se muestra a continuación.
$ chmod 755 helloworld.sh
3. Ejecute el script especificando la ruta absoluta o relativa
Puede ejecutar un script de shell utilizando la ruta absoluta o la ruta relativa.
Ejecute el script especificando la ruta absoluta como se muestra a continuación.
$ /home/ramesh/scripts/helloworld.sh Hello World!
Ejecutar el script especificando la ruta relativa como se muestra a continuación.
$ cd /home/ramesh/ $ ./scripts/helloworld.sh Hello World! (or) $ cd /home/ramesh/scripts $ ./helloworld.sh Hello World!
4. Ejecutar el script como un comando normal de Linux
También puede ejecutar un script sin especificar la ruta completa, la ruta absoluta o la ruta relativa. Para hacer esto, agregue el directorio donde se encuentra todo el script de shell a su variable de entorno PATH como se muestra a continuación.
Por ejemplo, una vez que agregué /home/ramesh/scripts a la variable de entorno PATH, puedo ejecutar el script desde cualquier directorio.
$ export PATH=$PATH:/home/ramesh/scripts $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/ramesh/scripts $ cd /go/to/anydirectory $ helloworld.sh Hello World!