~/.bashrc 与 ~/.bash_profile 区别

linux 用了好多年,今天在安装 pyenv 的时候,老版本环境变量是放到~/.bashrc下面,而新版本是放在 ~/.bash_profile里,突然发现用了这么多年linux,然而这两个目录的区别,我不知道,有点尴尬。

经过查阅,做出以下分享,供他人阅读,自己谨记。

当我们在bash 里面配置的别名,当我们退出bash后,或者我们重启系统后,shell 别名就不生效了。很多在shell 命令行下定义的变量,别名他的生命周期只是当前shell进程,如果想突破这个生命周期,我们就需要想办,把配置信息写入到配置文件当中。

bash 的配置文件分为两大类:

  1. profile 类

  2. bashrc类

    两大类都有什么作用,我们来分析一下。

    profile类:

    为交互式登陆的shell进程提供配置

    什么是交互式登陆进程?

    1.像我们登陆linux 操作系统,直接通过某终端输入账号密码后登陆打开的shell进程,这样的交互方式就是交互式登陆进程。

    2.使用su命令 su - username, 或者使用 su -l username 执行的登陆切换

    bashrc类:

    为非交互式登陆的shell进程提供配置

    su username 执行的登陆切换

    在图形界面下打开的终端 也是非交互式登陆。

    运行脚本的时候。

    运行脚本时我们不难发现,直接使用一个bash来运行脚本,shell 脚本的运行,是通过一个子shell进程实现的。

了解以上信息,我们就来讲讲这两大类的区别:

profile 类:

对于profile来讲,主要分为两类:

全局:对所有用户都生效,

/etc/profile这个配置文件已经 /etc/profile.d/所有以.sh结 尾的配置文件。

/etc/profile.d/*.sh

功能作用:

1.用来定义环境变量。

我们以前提到过,环境变量,在shell当中运行,当前shell 终止,当前环境变量就无效了。所以,我们要把环境变量放到配置文件当中。只要用户一启动,环境变量自动运行,一直有效。

2.用于运行命令,或者脚本。

我们打算用户登陆时,运行一个命令或者脚本,就直接运行一个初始化命令,或者一个初始化脚本,就通过profile类配置文件来实现,

很多大的配置文件都能够切割成主配置文件和众多片段,放在什么什么.d目录下,以 .conf结尾或者.sh结尾等等,像这个样子,等我们将来管理其中的某一个片段话配置时,我们只需要更改一个片段,或者删除一个片段就可以。所以这样能够做到将来在配置方面非常容易实现,

用户个人:

只对当前用户生效,这里和哪个用户相关,就对哪个用户生效。

~/.bash_profile

 

bashrc类:

全局:对所有用户生效

/etc/bashrc

用户个人:只对个人生效的

~/.bashrc

功能作用:

1.定义本地变量。

定义一个本地变量,并且一直有效,那么我们就定义在bashrc中。

2.定义命令别名。

定义一个命令别名,也在bashrc中,那么我们问一下,我想定义一个本地变量,想让他一直有效,是定义在全局里还是个人里。看个人需要,主要是看是否让所有人有效,如果只想对当前用户有效,话又说回来,只有管理员才有权限定义全局。因为全局配置文件,普通用户是没有权限去编辑的。

 

我们上面讲了这么多配置文件,哪个先生效,哪个后生效呢,下面我们来讲一下配置文件读取次序:

交互式登陆shell进程顺序:

/etc/profile ---> /etc/profile.d/* ---> ~/.bash_profile ---> ~/.bashrc ---> /etc/bashrc

非交互式登陆shell 进程顺序:

~/.bashrc ---> /etc/bashrc ---> /etc/profile.d/*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值