2.4 Command line options

SWI-Prolog can be executed in one of the following modes:

swipl --help
swipl --version
swipl --arch
swipl --dump-runtime-variables
These options must appear as only option. They cause Prolog to print an informational message and exit. See section 2.4.1.
swipl [option ...] script-file [arg ...]
These arguments are passed on Unix systems if file that starts with #!/path/to/executable [option ...] is executed. Arguments after the script file are made available in the Prolog flag argv.
swipl [option ...] prolog-file ... [[--] arg ...]
This is the normal way to start Prolog. The options are described in section 2.4.2, section 2.4.3 and section 2.4.4. The Prolog flag argc provides access to arg ... If the options are followed by one or more Prolog file names (i.e., names with extension .pl, .prolog or (on Windows) the user preferred extension registered during installation), these files are loaded. The first file is registered in the Prolog flag associated_file. In addition, pl-win[.exe] switches to the directory in which this primary source file is located using working_directory/2.
swipl -o output -c prolog-file ...
The -c option is used to compile a set of Prolog files into an executable. See section 2.4.5.
swipl -o output -b bootfile prolog-file ...
Bootstrap compilation. See section 2.4.6.

2.4.1 Informational command line options

--arch
When given as the only option, it prints the architecture identifier (see Prolog flag arch) and exits. See also -dump-runtime-variables. Also available as -arch.
--dump-runtime-variables [=format]
When given as the only option, it prints a sequence of variable settings that can be used in shell scripts to deal with Prolog parameters. This feature is also used by swipl-ld (see section 10.5). Below is a typical example of using this feature.
eval `swipl --dump-runtime-variables`
cc -I$PLBASE/include -L$PLBASE/lib/$PLARCH ...

The option can be followed by =sh to dump in POSIX shell format (default) or =cmd to dump in MS-Windows cmd.exe compatible format.

--help
When given as the only option, it summarises the most important options. Also available as -h and -help.
--version
When given as the only option, it summarises the version and the architecture identifier. Also available as -v.

2.4.2 Command line options for running Prolog

--home=DIR
Use DIR as home directory. See section 10.6 for details.
--quiet
Set the Prolog flag verbose to silent, suppressing informational and banner messages. Also available as -q.
--nodebug
Disable debugging. See the current_prolog_flag/2 flag generate_debug_info for details.
--nosignals
Inhibit any signal handling by Prolog, a property that is sometimes desirable for embedded applications. This option sets the flag signals to false. See section 10.4.21.1 for details.
--pldoc [=port]
Start the PlDoc documentation system on a free network port and launch the user's browser on http://localhost:\bnfmeta{port}. If port is specified, the server is started at the given port and the browser is not launched.
-tty
Unix only. Switches controlling the terminal for allowing single-character commands to the tracer and get_single_char/1. By default, manipulating the terminal is enabled unless the system detects it is not connected to a terminal or it is running as a GNU-Emacs inferior process. See also tty_control.
--win_app
This option is available only in swipl-win.exe and is used for the start-menu item. If causes plwin to start in the folder ...\My Documents\Prolog or local equivalent thereof (see win_folder/2). The Prolog subdirectory is created if it does not exist.
-O
Optimised compilation. See current_prolog_flag/2 flag optimise for details.
-s file
Use file as a script file. The script file is loaded after the initialisation file specified with the -f file option. Unlike -f file, using -s does not stop Prolog from loading the personal initialisation file.
-f file
Use file as initialisation file instead of the default .swiplrc (Unix) or swipl.ini (Windows). `-f none' stops SWI-Prolog from searching for a startup file. This option can be used as an alternative to -s file that stops Prolog from loading the personal initialisation file. See also section 2.2.
-F script
Select a startup script from the SWI-Prolog home directory. The script file is named <script>.rc. The default script name is deduced from the executable, taking the leading alphanumerical characters (letters, digits and underscore) from the program name. -F none stops looking for a script. Intended for simple management of slightly different versions. One could, for example, write a script iso.rc and then select ISO compatibility mode using pl -F iso or make a link from iso-pl to pl.
-x bootfile
Boot from bootfile instead of the system's default boot file. A boot file is a file resulting from a Prolog compilation using the -b or -c option or a program saved using qsave_program/[1,2].
-p alias=path1[:path2 ... ]
Define a path alias for file_search_path. alias is the name of the alias, and arg path1 ... is a list of values for the alias. On Windows the list separator is ;. On other systems it is :. A value is either a term of the form alias(value) or pathname. The computed aliases are added to file_search_path/2 using asserta/1, so they precede predefined values for the alias. See file_search_path/2 for details on using this file location mechanism.
--traditional
This flag disables the most important extensions of SWI-Prolog version 7 (see section 5) that introduce incompatibilities. In particular, lists will be represented in the traditional way, double quoted text is represented by a list of character codes and the functional notation on maps is not supported. Maps as a syntactic entity and the predicates that act on them remain supported if this flag is present.
--
Stops scanning for more arguments, so you can pass arguments for your application after this one. See current_prolog_flag/2 using the flag argv for obtaining the command line arguments.

2.4.3 Controlling the stack sizes

The default limit for the Prolog stacks is 128 MB on 32-bit and 256 MB on 64-bit hardware. The 128 MB limit on 32-bit systems is the highest possible value and the command line options can thus only be used to lower the limit. On 64-bit systems, the limit can both be reduced and enlarged. See section 2.19. Below are two examples, the first reducing the local stack limit to catch unbounded recursion quickly and the second using a big (32 GB) global limit, which is only possible on 64-bit hardware. Note that setting the limit using the command line only sets a soft limit. Stack parameters can be changed (both reduced and enlarged) at any time using the predicate set_prolog_stack/2.

$ swipl -L8m
$ swipl -G32g
-Gsize[kmg]
Limit for the global stack (sometimes also called term stack or heap). This is where compound terms and large numbers live.
-Lsize[kmg]
Limit for the local stack (sometimes also called environment stack). This is where environments and choice points live.
-Tsize[kmg]
Limit for the trail stack. This is where we keep track of assignments, so we can rollback on backtracking or exceptions.

2.4.4 Running goals from the command line

-g goal
Goal is executed just before entering the top level. Default is a predicate which prints the welcome message. The welcome message can be suppressed with --quiet, but also with -g true. goal can be a complex term. In this case quotes are normally needed to protect it from being expanded by the shell. A safe way to run a goal non-interactively is here:
% swipl <options> -g go,halt -t 'halt(1)'
-t goal
Use goal as interactive top level instead of the default goal prolog/0. goal can be a complex term. If the top-level goal succeeds SWI-Prolog exits with status 0. If it fails the exit status is 1. If the top level raises an exception, this is printed as an uncaught error and the top level is restarted. This flag also determines the goal started by break/0 and abort/0. If you want to stop the user from entering interactive mode, start the application with `-g goal' and give `halt' as top level.

2.4.5 Compilation options

-c file ...
Compile files into an `intermediate code file'. See section 2.10.
-o output
Used in combination with -c or -b to determine output file for compilation.

2.4.6 Maintenance options

The following options are for system maintenance. They are given for reference only.

-b initfile ...-c file ...
Boot compilation. initfile ... are compiled by the C-written bootstrap compiler, file ... by the normal Prolog compiler. System maintenance only.
-d token1,token2,...
Print debug messages for DEBUG statements tagged with one of the indicated tokens. Only has effect if the system is compiled with the -DO_DEBUG flag. System maintenance only.