.. _posix-env-sample:
POSIX Environment Variables
###########################
Overview
********
In this sample application, the POSIX :c:func:`setenv`, function is used to populate several environment
variables in C. Then, all environment variables are then printed.
If the user sets a new value for the ``ALERT`` environment variable, it is printed to standard
output, and then cleared via :c:func:`unsetenv`.
Building and Running
********************
This project outputs to the console. It can be built and executed on QEMU as follows:
.. zephyr-app-commands::
:zephyr-app: samples/posix/env
:host-os: unix
:board: qemu_riscv32
:goals: run
:compact:
Sample Output
=============
The program below shows sample output for a specific Zephyr build.
.. code-block:: console
BOARD=qemu_riscv32
BUILD_VERSION=zephyr-v3.5.0-5372-g3a46f2d052c7
ALERT=
Setting Environment Variables
=============================
The shell command below shows how to create a new environment variable or update the value
associated with an existing environment variable.
The C code that is part of this sample application displays the value associated with the
``ALERT`` environment variable and then immediately unsets it.
.. code-block:: console
uart:~$ posix env set ALERT="Happy Friday!"
uart:~$ ALERT="Happy Friday!"
uart:~$ posix env set HOME="127.0.0.1"
uart:~$
Getting Environment Variables
=============================
The shell command below may be used to display the value associated with one environment variable.
.. code-block:: console
uart:~$ posix env get BOARD
qemu_riscv32
The shell command below may be used to display all environment variables and their associated
values.
.. code-block:: console
uart:~$ posix env get
BOARD=qemu_riscv32
BUILD_VERSION=zephyr-v3.5.0-5372-g3a46f2d052c7
ALERT=
Unsetting Environment Variables
===============================
The shell command below may be used to unset environment variables.
.. code-block:: console
uart:~$ posix env unset BOARD