这是我参与8月更文挑战的第8天,活动详情查看,活动详情查看: 8月更文挑战shell
Linux系统中,有三种文件类型出现的很是频繁,那就是profile、bash_profile、bashrc文件。bash
由于名称的缘故,不少人会把这三类文件的做用记混,所以咱们今天就来详细盘点一下这三类文件的做用及区别。markdown
profile,路径:/etc/profile
,用于设置系统级的环境变量和启动程序,在这个文件下配置会对全部用户生效。app
当用户登陆(login)时,文件会被执行,并从/etc/profile.d
目录的配置文件中查找shell设置。ide
通常不建议在/etc/profile
文件中添加环境变量,由于在这个文件中添加的设置会对全部用户起做用。函数
当必须添加时,咱们能够按如下方式添加:post
如,添加一个HOST值为juejin.cn
的环境变量:ui
export HOST=juejin.cn
复制代码
添加时,能够在行尾使用;
号,也能够不使用。lua
一个变量名能够对应多个变量值,多个变量值须要使用:
进行分隔。url
添加环境变量后,须要从新登陆才能生效,也可使用source命令强制当即生效:
source /etc/profile
复制代码
查看是否生效可使用echo命令:
$ echo $HOST
juejin.cn
复制代码
bashrc文件用于配置函数或别名。bashrc文件有两种级别:
系统级的位于/etc/bashrc
,对全部用户生效。
用户级的位于~/.bashrc
,仅对当前用户生效。
bashrc文件只会对指定的shell类型起做用,bashrc只会被bash shell调用。
bash_profile
只对单一用户有效,文件存储位于~/.bash_profile
,该文件是一个用户级的设置,能够理解为某一个用户的profile目录下。
这个文件一样也能够用于配置环境变量和启动程序,但只针对单个用户有效。
和profile文件相似,bash_profile也会在用户登陆(login)时生效,也能够用于设置环境变理。
但与profile不一样,bash_profile只会对当前用户生效。
这三种文件类型的差别用一句话表述就是:
/etc/profile
,/etc/bashrc
是系统全局环境变量设定;
~/.profile
,~/.bashrc
用户家目录下的私有环境变量设定。
当登入系统时候得到一个shell进程时,其读取环境设定档以下:
/etc/profile
,而后根据其内容读取额外的设定的文档,如/etc/profile.d
和/etc/inputrc
;~/.bash_profile
;~/.bash_login
;~/.profile
(这三个文档设定基本上无差异,仅读取上有优先关系);~/.bashrc
。至于~/.profile
与~/.bashrc
都具备个性化定制功能,但~/.profile
能够设定本用户专有的路径、环境变量等,它只能登入的时候执行一次。
~/.bashrc
也是某用户专有设定文档,能够设定路径、命令别名,每次shell script的执行都会使用它一次。