Unix-like 系统(如 Linux 和 macOS):
-
环境变量的作用域:在 Unix-like 系统中,环境变量通常是进程特定的。这意味着在一个子 shell 中设置的环境变量仅对该子 shell 及其子进程有效。当子 shell 结束时,其环境变量也随之消失。
-
为什么更改会消失:子 shell 是父 shell 的一个独立进程。当你在子 shell 中设置一个环境变量时,这个设置仅在子 shell 的内存空间中生效。一旦子 shell 结束,它的内存空间被释放,所有的更改(包括环境变量设置)都会消失。
-
如何使更改持久化:要在 Unix-like 系统中使环境变量更改持久化,你需要将其添加到启动文件中,如
~/.bashrc
、~/.bash_profile
或/etc/profile
。这些文件在每次启动新的 shell 时都会被读取,从而应用其中的设置。
Windows 系统:
-
环境变量的作用域:在 Windows 中,环境变量可以设置为仅对当前会话有效,也可以设置为对所有新的进程有效。
-
系统级别与用户级别:在 Windows 中,你可以设置系统级别的环境变量,这些变量对所有用户和所有新进程都有效;也可以设置用户级别的环境变量,这些变量只对当前用户有效。
-
持久化:在 Windows 中,通过“系统属性”中的“环境变量”设置或通过命令行工具(如
setx
)设置的环境变量会被保存到注册表中,因此即使重启计算机,这些设置也会保持不变。