当前位置: 首页 > news >正文

Linux系统中三类重要文件的作用与区别

0BRLLSdACe0

  文章来源 | IT笔录

Linux系统中,有三种文件类型出现的非常频繁,那就是profile、bash_profile、bashrc文件。

因为名称的缘故,很多人会把这三类文件的作用记混,因此我们今天就来详细盘点一下这三类文件的作用及区别。

1. profile文件

1.1 profile文件的作用

profile(/etc/profile),用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。

当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找shell设置。

1.2 在profile中添加环境变量

一般不建议在/etc/profile文件中添加环境变量,因为在这个文件中添加的设置会对所有用户起作用。

当必须添加时,我们可以按以下方式添加:

如,添加一个HOST值为magedu.com的环境变量:

export HOST=magedu.com

添加时,可以在行尾使用;号,也可以不使用。

一个变量名可以对应多个变量值,多个变量值需要使用:进行分隔。

添加环境变量后,需要重新登录才能生效,也可以使用source命令强制立即生效:

source /etc/profile

查看是否生效可以使用echo命令:

$ echo $HOST

magedu.com

2. bashrc文件

bashrc文件用于配置函数或别名。bashrc文件有两种级别:

系统级的位于/etc/bashrc、用户级的位于~/.bashrc,两者分别会对所有用户和当前用户生效。

bashrc文件只会对指定的shell类型起作用,bashrc只会被bash shell调用。

3. bash_profile文件

bash_profile只对单一用户有效,文件存储位于~/.bash_profile,该文件是一个用户级的设置,可以理解为某一个用户的profile目录下。

这个文件同样也可以用于配置环境变量和启动程序,但只针对单个用户有效。

和profile文件类似,bash_profile也会在用户登录(login)时生效,也可以用于设置环境变理。

但与profile不同,bash_profile只会对当前用户生效。

4. 差异总结

这三种文件类型的差异用一句话表述就是:

/etc/profile,/etc/bashrc 是系统全局环境变量设定;~/.profile,~/.bashrc用户家目录下的私有环境变量设定。

当登入系统时候获得一个shell进程时,其读取环境设定档如下:

0BRKwkKPI36


4.1 首先读入全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如/etc/profile.d和/etc/inputrc;

4.2 根据不同使用者帐号,于其家目录内读取~/.bash_profile;

读取失败则会读取~/.bash_login;

再次失败则读取~/.profile(这三个文档设定基本上无差别,仅读取上有优先关系);

4.3 最后,根据用户帐号读取~/.bashrc。

至于~/.profile与~/.bashrc都具有个性化定制功能,但~/.profile可以设定本用户专有的路径、环境变量等,它只能登入的时候执行一次。

~/.bashrc也是某用户专有设定文档,可以设定路径、命令别名,每次shell script的执行都会使用它一次。

文章来源:马哥教育

官方微信:马哥linux运维

技术交流群:485374463

相关文章:

  • 《剑指offer》-前n项和不准用通解和各种判断
  • 内存映射文件原理探索(转载)
  • X-Frame-Options 响应头
  • Excel 总结
  • sklearn中随机森林的参数
  • CHIL-ORACLE-修改密码
  • itunes 无法构建版本问题
  • 继续过中等难度的题目
  • Spring Boot整合WebSocket介绍
  • [技术选型] Node.js
  • Spring cloud子项目
  • oracle 11gR2 ASM添加和删除磁盘
  • x-editable java 后台怎么写
  • java----数据结构与算法----集合元素的遍历:迭代器--------JavaAPI:java.util.Iterator+java.util.ListIterator...
  • Leetcode 423. Reconstruct Original Digits from English
  • 深入了解以太坊
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Babel配置的不完全指南
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • download使用浅析
  • EventListener原理
  • gcc介绍及安装
  • Java 最常见的 200+ 面试题:面试必备
  • Java,console输出实时的转向GUI textbox
  • Java小白进阶笔记(3)-初级面向对象
  • Linux CTF 逆向入门
  • magento 货币换算
  • Odoo domain写法及运用
  • python3 使用 asyncio 代替线程
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 阿里云应用高可用服务公测发布
  • 复杂数据处理
  • 前端技术周刊 2019-02-11 Serverless
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 移动端解决方案学习记录
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #Lua:Lua调用C++生成的DLL库
  • $.ajax()
  • (1)Android开发优化---------UI优化
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (第一天)包装对象、作用域、创建对象
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (一)Dubbo快速入门、介绍、使用
  • **PHP二维数组遍历时同时赋值
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Framework .NET Core与 .NET 的区别
  • .NET下的多线程编程—1-线程机制概述
  • .Net中的设计模式——Factory Method模式
  • @EnableConfigurationProperties注解使用
  • @javax.ws.rs Webservice注解