Tengo un script de otra persona que tiene un aspecto (nota: es un solo archivo):
#!/bin/bash
some commands
some commands
#!/bin/bash
some commands
some commands
#!/bin/bash
some commands
some commands
Me pregunto cuál es el propósito del segundo y tercer shebangs. ¿Es por error o a propósito?
bash
shell-script
shebang
Barat Sahdzijeu
fuente
fuente
#!/bin/bash
precedidos por<<
constructo (aquí documento) comosome command <<end_of_script_flag
:?<<
construcciones. Solo shebangs simples y algunos comandos de eliminación (este fue un script de desinstalación)#!
líneas extra ?Uninstall.command
(plataforma: Mac OS X).Respuestas:
Si estas líneas no son el comienzo de los scripts de shell incluidos que se construirán, es decir, dentro de un esquema de la forma:
A continuación, la construcción repetida que has encontrado es el resultado de muchos
copy
-paste
de shell scripts completos pero sin suficiente cuidado y conocimiento de lo que es el uso de estos comentarios muy especial en la línea 1 de guiones, comenzando con#!
.Tenga cuidado antes de usar un script de shell (no
sudo
, nosu
:)).fuente
/bin/rm
(+ cosas ficticias para alimentar al robot)!source
agrega por nombre. Sin embargo, no veo la necesidad del cerebro de comentarios. Es perfectamente admisible de esta manera y es la razón por la cual el shebang es una línea de comentarios.Sin propósito, estos son solo comentarios. A menos que 'algunos comandos' contengan algunos comandos que guarden esto en un archivo separado para su posterior ejecución.
fuente
rm
operaciones que desinstalan alguna aplicación. Pensé que podría estar relacionado con bifurcar un nuevo shell, pero aparentemente fue sucio copiar y pegar por el creador del script.#!
mismo uso a nivel del núcleo (verman execve
) en cualquier sistema Unix (OpenBSD, FreeBSD, MacOS X, Kali-linux ...). Elbash
simplemente ve esto como un comentario.mv ln cp dd vi ...
junto con otros 200 comandos? ¿Por qué no los estresas también? Pueden sentirse excluidos.