/etc/profile 和 /etc/profile.d/ 的区别
/etc/profile
是文件, /etc/profile.d/
是目录,用在设置环境变量方面,/etc/profile
文件和 /etc/profile.d/
目录实现效果是一样的,可根据自己对环境变量配置的需求场景,选择一种最好的方式来配置环境变量,一般应用场景下,全局变量配置于 /etc/profile.d
目录下是最佳的实践方式,/etc/profile.d/
比 /etc/profile
好维护。
/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/profile.d/ 目录
在 /etc/profile.d
目录中存放的是一些应用程序所需的启动脚本,比如 vim 等命令的一些附加设置,在 /etc/profile.d
目录下添加相关的环境变量设置的 .sh
脚本文件,这些脚本文件的环境变量能够被生效,是因为在 /etc/profile
被读取的时候,会使用一个 for 循环语句来调用 /etc/profile.d
下的脚本,这些脚本文件所设置的环境变量就和 /etc/profile
启动时一起被设置起来了,cat /etc/profile
可以看到有一段加载 /etc/profile.d
目录下所有 .sh
脚本文件的代码:
if [ -d /etc/profile.d ]; thenfor i in /etc/profile.d/*.sh; doif [ -r $i ]; then. $ifidoneunset i
fi
从上面的代码不难理解,/etc/profile.d/
目录下设置环境变量和 /etc/profile
效果是一样的,都是全局环境变量,一旦生效后也都是永久环境变量; /etc/profile.d/
比 /etc/profile
好维护,不想要的环境变量从 /etc/profile.d/
目录中移除即可,创建好的环境变量拷贝文件就轻松的移植到其他的计算机,不用每次去改动 /etc/profile
文件。
根据上面描述可以推理出:
/etc/profile.d
目录下的环境变量是/etc/profile
启动时一起被读取,那么想要在当前 shell 终端临时生效可以使用source /etc/profile
,要全局生效则需要注销重登录或者直接重启系统,和/etc/profile
原理一样;/etc/profile.d
目录下的环境变量和/etc/profile
的环境变量优先级,根据环境变量在/etc/profile
的 for 循环语句调用/etc/profile.d
的前面还是后面,在前则被/etc/profile.d
目录下的环境变量覆盖,在后则被/etc/profile
的环境变量覆盖
/etc/profile 和 /etc/profile.d/ 的区别相关推荐
- Centos 配置JDK,添加环境变量/etc/profile和/etc/profile.d
一. etc下是profile文件还是profile.d文件夹 我使用的是阿里云的轻量应用服务器,所以 etc 下为 profile.d文件夹,并不是 profile文件 profile.d文件夹 e ...
- Springboot使用Maven Profile和Spring Profile进行多环境配置
Springboot使用Maven Profile和Spring Profile进行多环境配置 目的 在实际的项目上,一般会分三种环境dev.test.prod来方便我们的开发和部署,要求我们在开发的 ...
- linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程
关于登录linux时,/etc/profile.~/.bash_profile等几个文件的执行过程. 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile ...
- Maven profile整合Spring profile
在Maven和Spring中,都有profile这个概念.profile是用于区分各种环境的,例如开发环境.测试环境.正式环境等.Maven的profile用于在打包时根据指定环境替换不同环境的配置文 ...
- Linux下profile和bashrc四种的区别
/etc/profile./etc/bashrc.~/.bash_profile.~/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么? /etc/profile: 用来设置系统环境 ...
- Linux 环境下/etc/profile和/etc/profile.d 的区别和用法!
区别: 1. 两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效 2. /etc/profile.d/比/etc/p ...
- ~/.profile和/etc/profile的区别
登入系统读取步骤: 当登入系统时候获得一个shell进程时,其读取环境设定档有三步 : 1.首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如 /etc/p ...
- oracle io profile,ORACLE 中 PROFILE的管理
PROFILE的管理(资源文件) 当需要设置资源限制时,必须设置数据库系统启动参数RESOURCE_LIMIT,此参数默认值为FALSE 可以使用如下命令来启动当前资源限制: alter system ...
- 国外学校css profile,CSS Print Profile
摘要: This specification defines a subset of Cascading Style Sheets Level 2, revision 1 and CSS3 Modul ...
最新文章
- RISC-V生态未来的三种可能~
- 黄聪:C#用正则表达式获得指定开始和结束字符串中间的一段文本
- 创建透明窗口及其应用--屏幕画笔
- 计算机在管理会计中的应用毕业论文,计算机在管理会计中的应用写毕业论文用的,帮帮找..._中级会计职称_帮考网...
- Android Intent And Intent Filter
- 怎么装python编译器_python编译器安装
- 基于阿里云服务器使用宝塔面板搭建 Typecho 博客
- excel如何把多张表合并成一个表_从产品经理到总监,就差一张高价值Excel表
- Android中关于Adapter的使用(下)BaseAdapter
- 第三十七课.宽度学习
- html转化pdf文字无法显示,HTML 转 PDF 排雷 之 wkhtmltopdf 转换得到的PDF没有内容
- 真相了!关于“写书”这件事
- SONiC(3):手动运行docker ptf
- 模式匹配与正则表达式(一)
- 气象数据分析之EMD方法介绍及python的实现
- 怎样用JS实现关闭当前窗口
- Bootstrap智能消息提示框
- 已知有十六支男子足球队参加2008北京奥运会。写一个程序,把这16支球队随机分为4个组。
- 【干货】我的机器学习入门路线图
- 计算机安装xp蓝屏怎么办,当我在笔记本电脑上安装XP时,出现蓝屏. 我该怎么解决?...