Shebang (#!) en Linux: Elegir el Intérprete de Scripts Shell
Todo script que se ejecutará en Linux debe indicar el Intérprete de comandos, debe en su primera línea iniciar con los caracteres "#!" seguido de la ruta completa del intérprete de comandos. Estos caracteres son conocidos como "shebang".
Ejemplo de un script de shell llamado buendia:
#!/bin/bashclearecho “Olá $USER”echo “Hoje é “;dateecho “Número de usuários conectados: ” ; who | wc -lecho “Calendário”calexit 0
Como se estudió anteriormente, para que un archivo sea considerado ejecutable es preciso que su permiso sea alterado y el bit ejecutable habilitado:
$ chmod +x bomdia
De esta manera el pequeño script podrá ser ejecutado en el prompt:
Olá uiraribeiro
Hoje é
sex set 27 10:56:54 -03 2019
Número de usuários conectados:
2
Calendário
setembro 2019
do se te qu qu se sá
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Otros intérpretes pueden ser invocados por la línea "#!", tales como /bin/sh, /usr/bin/perl, /usr/bin/awk, entre otros.
Cuando un script es ejecutado, el shell analiza el contenido de la línea "#!" y carga el programa definido para interpretar el script.
En un script de shell esta línea hace que un nuevo programa del shell sea ejecutado para interpretar el script. Mientras tanto, el shell que lo ejecutó queda en estado de espera.
El nuevo proceso iniciado ejecuta nuevamente los archivos /etc/bashrc y ~/.bashrc.
Un aspecto importante es que el shell padre (en el que el script fue llamado) puede pasar variables al proceso shell hijo que ejecutará el script. Pero el shell hijo no podrá pasar variables o alterar el contenido de ellas al proceso padre. La herencia es un camino de una sola vía del proceso padre al proceso hijo.
Es importante que la llamada en la línea "#!" que define qué intérprete debe ser ejecutado esté correcta. Si la ruta está incorrecta, el script podrá no ser ejecutado. Ya los comentarios en los scripts de Bash son señalados con solo una almohadilla "#". Todo lo que queda de la línea será ignorado por el shell.
Permisos de Ejecución de script en Linux
Para que un script pueda ser ejecutado, necesita tener permiso de ejecución y el comando chmod puede ser utilizado para habilitar este bit para un script.
$ chmod +x script
Un script siempre será ejecutado con los permisos del usuario que lo ejecutó, y de ninguna manera el Kernel obedecerá al bit SUID o SGID para script.
Sin embargo, el script podrá ser ejecutado con los permisos de otro usuario si se utiliza el comando "sudo".
Vea este script que imprime el UID del usuario:
#!/bin/bashecho "eu sou:"id
Si se ejecuta normalmente:
$ ./meuscripteu sou:uid=1000(uira) gid=1000(uira) grupos=1000(uira),4(adm),10(wheel),190(systemd-journal)
Pero si se ejecuta con el sudo:
$ sudo ./meuscripteu sou:uid=0(root) gid=0(root) grupos=0(root)
Por lo tanto, se debe tomar extremo cuidado al ejecutar un script con el "sudo", ya que todos los comandos que el script invoca serán ejecutados con los permisos de otro usuario, y posiblemente el root.
Se utilizó en el ejemplo la ruta relativa "./" para llamar al script, porque el directorio actual no está listado en la variable PATH.
Aprenda mucho más sobre Linux en nuestro curso en línea. Puede realizar la inscripción aquí. Si ya tiene una cuenta, o quiere crear una, simplemente entre o cree su usuario aquí.
¿Le gustó? Comparta
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.