.. _env_vars:

Environment Variables
=====================

Various pages in this documentation refer to setting Zephyr-specific
environment variables. This page describes how.

Setting Variables
*****************

Option 1: Just Once
-------------------

To set the environment variable :envvar:`MY_VARIABLE` to ``foo`` for the
lifetime of your current terminal window:

.. code-block:: console

   # Linux and macOS
   export MY_VARIABLE=foo

   # Windows
   set MY_VARIABLE=foo

.. warning::

  This is best for experimentation. If you close your terminal window, use
  another terminal window or tab, restart your computer, etc., this setting
  will be lost forever.

  Using options 2 or 3 is recommended if you want to keep using the setting.

Option 2: In all Terminals
--------------------------

**macOS and Linux**:

Add the ``export MY_VARIABLE=foo`` line to your shell's startup script in your
home directory. For Bash, this is usually :file:`~/.bashrc` on Linux or
:file:`~/.bash_profile` on macOS.  Changes in these startup scripts don't
affect shell instances already started; try opening a new terminal window to get
the new settings.

**Windows**:

You can use the ``setx`` program in ``cmd.exe`` or the third-party
RapidEE program.

To use ``setx``, type this command, then close the terminal window. Any new
``cmd.exe`` windows will have :envvar:`MY_VARIABLE` set to ``foo``.

.. code-block:: console

   setx MY_VARIABLE foo

To install RapidEE, a freeware graphical environment variable
editor, `using Chocolatey`_ in an Administrator command prompt:

.. code-block:: console

   choco install rapidee

You can then run ``rapidee`` from your terminal to launch the program and set
environment variables. Make sure to use the "User" environment variables area
-- otherwise, you have to run RapidEE as administrator. Also make sure to save
your changes by clicking the Save button at top left before exiting.Settings
you make in RapidEE will be available whenever you open a new terminal window.

.. _env_vars_zephyrrc:

Option 3: Using ``zephyrrc`` files
----------------------------------

Choose this option if you don't want to make the variable's setting available
to all of your terminals, but still want to save the value for loading into
your environment when you are using Zephyr.

**macOS and Linux**:

Create a file named :file:`~/.zephyrrc` if it doesn't exist, then add this line
to it:

.. code-block:: console

   export MY_VARIABLE=foo

To get this value back into your current terminal environment, **you must run**
``source zephyr-env.sh`` from the main ``zephyr`` repository. Among other
things, this script sources :file:`~/.zephyrrc`.

The value will be lost if you close the window, etc.; run ``source
zephyr-env.sh`` again to get it back.

**Windows**:

Add the line ``set MY_VARIABLE=foo`` to the file
:file:`%userprofile%\\zephyrrc.cmd` using a text editor such as Notepad to save
the value.

To get this value back into your current terminal environment, **you must run**
``zephyr-env.cmd`` in a ``cmd.exe`` window after changing directory to the main
``zephyr`` repository.  Among other things, this script runs
:file:`%userprofile%\\zephyrrc.cmd`.

The value will be lost if you close the window, etc.; run ``zephyr-env.cmd``
again to get it back.

.. _zephyr-env:

Zephyr Environment Scripts
**************************

You can use the zephyr repository scripts ``zephyr-env.sh`` (for macOS and
Linux) and ``zephyr-env.cmd`` (for Windows) to load Zephyr-specific settings
into your current terminal's environment. To do so, run this command from the
zephyr repository::

  # macOS and Linux
  source zephyr-env.sh

  # Windows
  zephyr-env.cmd

These scripts:

- set :envvar:`ZEPHYR_BASE` (see below) to the location of the zephyr
  repository
- adds some Zephyr-specific locations (such as zephyr's :file:`scripts`
  directory) to your :envvar:`PATH` environment variable
- loads any settings from the ``zephyrrc`` files described above in
  :file:`env_vars_zephyrrc`.

You can thus use them any time you need any of these settings.

.. _env_vars_important:

Important Environment Variables
*******************************

Here are some important environment variables and what they contain. This is
not a comprehensive index to the environment variables which affect Zephyr's
behavior.

- :envvar:`BOARD`: allows set the board when building an application; see
  :ref:`important-build-vars`.
- :envvar:`CONF_FILE`: allows adding Kconfig fragments to an application build;
  see :ref:`important-build-vars`.
- :envvar:`DTC_OVERLAY_FILE`: allows adding devicetree overlays to an
  application build; see :ref:`important-build-vars`.
- :envvar:`ZEPHYR_BASE`: the absolute path to the main ``zephyr`` repository.
  This is set whenever you run the ``zephyr-env.sh`` or ``zephyr-env.cmd``
  scripts mentioned above.
- :envvar:`ZEPHYR_TOOLCHAIN_VARIANT`: the current :ref:`toolchain
  <gs_toolchain>` used to build Zephyr applications.

.. _using Chocolatey: https://chocolatey.org/packages/RapidEE
