/etc/profile和/etc/environment的区别

折月煮酒 提交于 2019-12-01 06:54:51

/etc/profile 文件

当一个用户登录Linux系统或使用 su 命令切换到另一个用户时,设置用户环境第一个读取的文件就是 /etc/profile ,此文件为系统全局变量配置文件,且仅仅在第一次登录系统时才会全局运行 /etc/profile

注意上面描述的几个关键:

  • 设置用户环境第一个读取的脚本文件 可以推理出在它之后读取的文件设置环境变量将会会覆盖 /etc/profile 文件中配置的环境变量;
  • 仅仅在第一次登录系统时才会全局运行 /etc/profile 可以解释一个场景:我们在使用Ubuntu等桌面Linux系统时,用快捷键 ctrl+alt+t 打开的shell终端里,修改环境变量后使用source /etc/profile这个命令执行生效,新的环境变量只能在当前的终端里面有效,打开新的shell终端时,刚才有效的环境变量在新的终端是不生效的;所以全局生效 /etc/profile 环境变量的正确方式是注销重登录或者直接重启系统

以添加JDK的环境变量为例子,vim /etc/profile 打开文件, 在文件最后添加:

export JAVA_HOME=/opt/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH

/etc/environment 文件

/etc/profile 文件之后,登录系统时读取环境信息使用的第二个文件就是 /etc/environment 文件,理论上在这个文件中也可以设置环境变量,环境变量达到的效果也和 /etc/profile 文件的环境变量效果一样,全局永久的环境变量;

但是,最好别通过这个文件添加或修改环境变量,因为 /etc/profile 文件是面对系统用户的,填写错了大不了最多导致系统里的所有用户无法使用,但是 /etc/environment 文件是面对系统的,系统通过 /etc/environment 文件中的PATH去找对应的东西,以Ubuntu为例子,如果不小心更改 /etc/environment 文件中把PATH影响到,就无法进入桌面界面了,也无法使用一些命令了;

所以,/etc/environment 文件太重要了,仅仅想要设置一个全局的环境变量,完全没有必要用这个文件。

扩展文章:

/etc/profile和/etc/profile.d/的区别

Linux下环境变量配置

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!