SYSTEM
[SIC\]SYSTEM ["Command"]
$ Command
Execute a command from the operating system, or create a subshell.
Interactive shell (no argument)
If no argument is given, start a subshell based on the SIC logical
GAG_PROCESS. If it is not defined, the user $SHELL environment vari-
able is used. If it is also not defined, the last fallback is /bin/sh.
The subshell can be terminated by typing `exit' or `bye' or `logout',
depending on the shell, and controls return to SIC in this case.
Script/command execution (one string argument)
If an argument is given, execute the command in a /bin/sh subshell
(note that /bin/sh is system-dependent and might behave differently
from one system to another). It must be a single argument: use double-
quotes to enclose multiple arguments separated by blanks. Note that an
error is raised if the shell command returns a non-zero status. This
behavior can be modified in 2 manners:
- use dedicated command options, if any, to ensure it does not return
a non-zero status (for example -q option for grep),
- catch the error in the shell way, e.g. terminate the command line
with " || true" which executes the "true" command if an error oc-
curs. Obviously ignoring errors is at your own risk.
Processes started in background from SYSTEM (for example with "&") be-
long to SIC process group and are terminated when SIC exits. To keep
such a process running after SIC termination, start it with `setsid'
(for example `SYSTEM "setsid ./job.sh &"'). This creates a new ses-
sion/process group detached from SIC. Such detached processes are not
managed by SIC anymore and must be terminated by other means.
Note that Unix environment variables cannot be defined in such a way,
since it is a subshell (i.e. the environment modifications are lost
when the subshell ends). In particular, use command SIC DIRECTORY to
change your working directory.
$ Command (direct command execution)
At the interactive prompt, system commands can also be executed di-
rectly from the SIC level using the $ token. "Command" must be a valid
operating system command in the default shell of the user (e.g. $ls
-l). The $ token is invalid in procedures.