专栏首页北京马哥教育Linux系统中三类重要文件的作用与区别

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

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进程时,其读取环境设定档如下:

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运维(magedu-Linux),作者:糖豆

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程

    在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile...

    小小科
  • 使用Heapster和Splunk监控Kubernetes运行性能

    作者:naughty Kubernetes已经成为容器编排的事实上的王者,连Docker都已经向K8s女王大人低头。对于Kubernetes的cluster的...

    小小科
  • 计算机操作系统学习笔记_进程管理--死锁

    进程管理 --死锁 一、死锁的概念 1.死锁的概念   系统中两个或两个以上的进程无限期地相互等待永远不会发生的条件,系统处于一种停滞状态,这种情况称为死锁。 ...

    小小科
  • mac使用zsh终端环境变量配置无效的解决方案

    喜欢天文的pony站长
  • 解决微服务profile遇到的问题1. profile之Maven2. profile之Spring boot3. config server的配置4. 总结

    最近遇到Spring-boot的多个profile切换问题,需求是这样的:微服务中引入了Spring Cloud Config,服务启动的时候,从Config ...

    Java架构
  • Ceph最新的EC-CLAY插件调研-上

    Clay Codes ( Clay Codes: Moulding MDS Codes to Yield an MSR Code ) 是FAST18 上提出的一...

    用户1260683
  • maven setting.xml配置说明

    setting.xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mave...

    cloudskyme
  • Maven配置文件settings.xml详解

    note:用户配置优先于全局配置。${user.home} 和和所有其他系统属性只能在3.0+版本上使用。请注意windows和Linux使用变量的区别。

    魏晓蕾
  • NodeJS源码解析--Node如何处理HTTP请求

    看过我之前的写的文章的朋友们应该会知道,使用NodeJS创建一个HTTP服务器是非常简单的。我们写的一个个API中使用req来接收请求,使用re...

    创译科技
  • 在 React 和 Vue 中尝鲜 Hooks

    在美国当地时间 10 月 26 日举办的 React Conf 2018 上,React 官方宣布 React v16.7.0-alpha 将引入名为 Hook...

    江米小枣

扫码关注云+社区

领取腾讯云代金券