ref: c7d9da8f5a41b833946027c802e0e8d7dd014b22
dir: /sys/man/3/env/
.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 .SH BUGS A write starting at an offset after the current extent of a file yields an error instead of zero filling.