se usa bash. Intenté shc -f /test.sh dentro de freebsd 8. pero el script se elimina de inmediato. Comando "file /test.sh.x" return: ELF ejecutable LSB de 32 bits, Intel 80386, versión 1 (FreeBSD), vinculado dinámicamente (usa libs compartidas), para FreeBSD 8.0 (800107), despojado
Julio Fong
Respuestas:
1
La solución es usar solo ksh en lugar de [ba] sh como intérprete de script.
El shcprograma no es un compilador de shell real. Desde la página del manual :
shc en sí no es un compilador como cc, sino que codifica y cifra un script de shell y genera código fuente C con la capacidad de caducidad añadida. Luego usa el compilador del sistema para compilar un binario eliminado que se comporta exactamente como el script original. Tras la ejecución, el binario compilado descifrará y ejecutará el código con la opción shell -c. Desafortunadamente, no le dará ninguna mejora de velocidad como lo haría un verdadero programa C
Algunos lenguajes de script como, por ejemplo, Python convierten los scripts en bytecode antes de ejecutarlos. Los proyectiles que se pueden usar de forma interactiva generalmente no lo hacen, solo son intérpretes.
Incluso se podría argumentar que, a excepción de algunas decoraciones como variables, bucles y otras estructuras de control, los shells son principalmente un front-end para las funciones forky exec.
Realmente no existe un script de shell binario (script significa que no es binario), aunque es posible agregar un binario ejecutable o un archivo comprimido al final de un script de shell, que generalmente solo contiene un comando de cola para quitar el shell script y descomprimir / preprocesar y ejecutar el binario.
Si se configura correctamente, la secuencia de comandos debe incluir el shell para usar (#! / Bin / sh sería el valor predeterminado tradicional de Unix), o debería usar solo comandos comunes a todos los shells. Lo simple es hacer que sea solo de seguridad y abrirlo con vi y echar un vistazo, y luego simplemente ejecutar los comandos de carga útil en el archivo usted mismo (con los ajustes necesarios, a menudo el punto es configurar algunas variables de entorno o realice algún preprocesamiento, con mayor frecuencia incluyendo descompresión).
Respuestas:
La solución es usar solo ksh en lugar de [ba] sh como intérprete de script.
fuente
El
shc
programa no es un compilador de shell real. Desde la página del manual :Algunos lenguajes de script como, por ejemplo, Python convierten los scripts en bytecode antes de ejecutarlos. Los proyectiles que se pueden usar de forma interactiva generalmente no lo hacen, solo son intérpretes.
Incluso se podría argumentar que, a excepción de algunas decoraciones como variables, bucles y otras estructuras de control, los shells son principalmente un front-end para las funciones
fork
yexec
.fuente
Realmente no existe un script de shell binario (script significa que no es binario), aunque es posible agregar un binario ejecutable o un archivo comprimido al final de un script de shell, que generalmente solo contiene un comando de cola para quitar el shell script y descomprimir / preprocesar y ejecutar el binario.
Si se configura correctamente, la secuencia de comandos debe incluir el shell para usar (#! / Bin / sh sería el valor predeterminado tradicional de Unix), o debería usar solo comandos comunes a todos los shells. Lo simple es hacer que sea solo de seguridad y abrirlo con vi y echar un vistazo, y luego simplemente ejecutar los comandos de carga útil en el archivo usted mismo (con los ajustes necesarios, a menudo el punto es configurar algunas variables de entorno o realice algún preprocesamiento, con mayor frecuencia incluyendo descompresión).
fuente