shithub: riscv

ref: 95114db7e087da60a878df5c3e4cb5f7a1b3b28a
dir: /sys/man/3/env/

View raw version
.TH ENV 3
.SH NAME
env \- environment variables
.SH SYNOPSIS
.nf
.B bind #e /env

.BI /env/ var1
.BI /env/ var2
 ...
.fi
.SH DESCRIPTION
The
.I env
device serves a one-level directory containing files with arbitrary names
and contents.
The intention is that the file name is the name of an
.I environment variable
(see
.IR rc (1)),
and the content is the variable's current value.
.PP
When a
.IR fork (2)
system call creates a new process, both the parent and the
child continue to see exactly the same files in the
.I env
device: changes made in either process can be noticed by the other.
In contrast, an
.B rfork
system call with the
.B RFENVG
bit set (see
.IR fork (2))
causes a split: initially both process groups see the
same environment files, but any changes made in one process group
cannot be noticed by the other.
An
.B rfork
with
.B RFCENVG
splits and then clears the environment.
.PP
The special global environment
.B #ec
contains kernel configuration variables,
such as those set in 
.IR plan9.ini (8).
All processes see the same
.BR #ec ;
its contents are writable only by the host owner.
.SH SEE ALSO
.IR rc (1),
.IR fork (2),
.B #c/reboot
in
.IR cons (3),
.IR plan9.ini (8)
.SH SOURCE
.B /sys/src/9/port/devenv.c