Shell environment variables used by Perl 6

What variables you can declare to alter its behavior.

The behavior of the interpreter can be tweaked by a (growing) number of environment variables; this section attempts to document all those currently in use. All these variables correspond to the Rakudo, and they are interpreter specific in all cases, except where some use conventional names such as PATH.

The underlying virtual machine is also sensitive to a series of environment variables, they are listed in this wiki page

Module Loading

Error Message Verbosity and Strictness

If true, suppresses deprecation warnings triggered by the is DEPRECATED trait.

If true, deprecation warnings become thrown exceptions.

Displays source code in stack frames surrounded by the specified number of lines of context.

Controls whether .setting files are included in backtraces.

Affecting Precompilation

When this is set, Rakudo will look for the standard repositories (perl, vendor, site) in the specified directory. This is intended as an escape hatch for build-time bootstrapping issues, where Rakudo may be built as an unprivileged user without write access to the runtime paths in NQP's config.

Line editor


Override the default maximum number of threads used by a thread pool.

The IO::Spec::Unix.tmpdir method will return $TMPDIR if it points to a directory with full access permissions for the current user, with a fallback default of '/tmp'.

IO::Spec::Cygwin and IO::Spec::Win32 use more Win32-appropriate lists which also include the %TEMP% and %TMP% environment variables.


Initial version written by the Rakudo contributors, see the CREDITS file.

The initial version of this manual page was written by Reini Urban, Moritz Lenz and the Rakudo contributors.