1、环境变量是进程私有属性;
2、进程启动时,由父进程给出 “初始环境变量值”,开发实践中,父进程通常会把自身当前的环境传递给子进程,如需要(比如考虑安全性),会过滤环境值;
3、进程运行中可以随时改变自身环境值,不影响其他进程的环境;
4、首个用户进程 init 的环境由内核给出;
5、查看procfs,比如 /proc/[pid]/environ,可以获得该进程启动时的初始环境值;
6、进程修改环境值后,不影响其初始环境值,就是说,修改完了 /proc/[pid]/environ 不会跟着变。
因此,
问:如果用 bash export 一个变量,在csh中有效吗?
答:当 export 会修改 bash 进程当前的环境值,任何在修改后直接或间接创建的子进程,原则上会继承前述 export 修改。但因进程有权决定子进程的初始环境值,所以前述修改存在被过滤的可能。