Environment variables
Linux environment variables¶
Arch Wiki: environment variables
System-wide¶
/etc/profile
is sourced by all POSIX-compatible shells upon login.- Files inside the
/etc/profile.d/
directory will also be read.
Bash¶
~/.profile
or~/.bash_profile
for login bash instances.~/.bashrc
for every interactive bash instance.
Zsh¶
~/.zshenv
for environment variables in all zsh instances.~/.zprofile
for every login zsh instance.~/.zshrc
for every interactive zsh instance.
Note
zsh does not source ~/.profile
by default because of the difference between bash and zsh syntaxes. You can add this line to ~/.zprofile
or ~/.zshenv
to make zsh shells read `~/.profile correctly.
~/.zshenv
skip_global_compinit=1
test -r ${HOME}/.profile && emulate sh -c 'source ${HOME}/.profile'
X Window¶
~/.xinitrc
is sourced bystartx
.~/.xprofile
is sourced by display managers (e.g., GDM, SDDM)
Systemd and Wayland¶
~/.config/environment.d/*.conf
: sourced bysystemd
. Also, they are used in Wayland sessions wherexinitrc
andxprofile
files are not available.
Windows environment variables¶
Environment variables in Powershell
Session variables¶
Variables created by set
are bound to the current session and not persistent.
$Env:FOO = "example"
$Env:FOO
Persistent variables¶
- GUI: Windows Settings -> Advanced system settings -> Set Environment Variables.
- Powershell:
[Environment]::SetEnvironmentVariable('KEY', 'VAL', 'Machine')
- Cmd:
SETX KEY VAL