shell 变量加载顺序
set设置了当前shell进程的本地变量,本地变量只在当前shell的进程内有效,不会被子进程继承和传递。
env仅为将要执行的子进程设置环境变量。
export将一个shell本地变量提升为当前shell进程的环境变量,从而被子进程自动继承,但是export的变量无法改变父进程的环境变量。
source运行脚本的时候,不会启用一个新的shell进程,而是在当前shell进程环境中运行脚本。
exec运行脚本或命令的时候,不会启用一个新的shell进程,并且exec后续的脚本内容不会得到执行,即当前shell进程结束了。
假设你想要设置一个名为 MY_VAR 的环境变量,你可以按照以下步骤进行:
在 /etc/profile 中设置 MY_VAR,这将对所有用户生效。
在你的 ~/.bash_profile 中覆盖 MY_VAR,这将只影响你的登录会话。
在你的 ~/.bashrc 中再次覆盖 MY_VAR,这将影响你的所有交互式 shell 会话。
在命令行中使用 export MY_VAR=new_value,这将覆盖所有之前的设置。