Index of Section 1 Manual Pages

Interix / SUAshc.1Interix / SUA

shc(1)                                                     shc(1)



NAME
       shc - Generic shell script compiler

SYNOPSIS
       shc [ -e date ] [ -m addr ] [ -i iopt ] [ -x cmnd ]
       [ -l lopt ] [ -ACDhTv ] -f script

DESCRIPTION
       shc  creates  a  stripped binary executable version of the
       script specified with -f on the command line.

       The binary version will get a .x  extension  appended  and
       will  usually  be  a  bit larger in size than the original
       ascii code.  Generated C source code is saved  in  a  file
       with the extension .x.c

       If  you  supply  an expiration date with the -e option the
       compiled binary will refuse to run after the  date  speci-
       fied.   The message "Please contact your provider" will be
       displayed instead.  This message can be changed  with  the
       -m option.

       You  can compile any kind of shell script, but you need to
       supply valid -i, -x and -l options.

       The compiled binary will still be dependent on  the  shell
       specified  in  the  first  line  of  the  shell code (i.e.
       #!/bin/sh), thus shc does not create  completely  indepen-
       dent binaries.

       shc itself is not a compiler such as cc, it rather encodes
       and encrypts a shell script and generates  C  source  code
       with  the  added  expiration  capability. It then uses the
       system compiler to compile a stripped binary which behaves
       exactly like the original script. Upon execution, the com-
       piled binary will decrypt and execute the  code  with  the
       shell -c option.  Unfortunatelly, it will not give you any
       speed improvement as a real C program would.

       shc's main purpose is to protect your shell  scripts  from
       modification  or inspection. You can use it if you wish to
       distribute your scripts but don't want them to  be  easily
       readable by other people.

OPTIONS
       The command line options are:

       -e date
              Expiration date in dd/mm/yyyy format [none]

       -m message
              message to display upon expiration ["Please contact
              your provider"]

       -f script_name
              File name of the script to compile

       -i inline_option
              Inline option for the shell interpreter i.e: -e

       -x comand
              eXec   command,   as   a   printf    format    i.e:
              exec(\\'%s\\',@ARGV);

       -l last_option
              Last shell option i.e: --

       -r     Relax security. Make a redistributable binary which
              executes on  different  systems  running  the  same
              operating system.

       -v     Verbose compilation

       -D     Switch on debug exec calls

       -T     Allow binary to be traceable (using strace, ptrace,
              truss, etc.)

       -C     Display license and exit

       -A     Display abstract and exit

       -h     Display help and exit

ENVIRONMENT VARIABLES
       CC     C compiler command [cc]

       CFLAGS C compiler flags [none]

EXAMPLES
       Compile a script which can be run on  other  systems  with
       the trace option enabled:

         example% shc -v -r -T -f myscript

BUGS
       The maximum size of the script that could be executed once
       compiled is limited by the operating system  configuration
       parameter _SC_ARG_MAX (see sysconf(2))

AUTHOR
       Francisco Rosales 

REPORT BUGS TO
       the author.



shc Version 3.8            Jun 18, 2003                    shc(1)

Interix / SUAHosted at SUA Community for Interix, SUA and SFUInterix / SUA