博客主页:瞧瞧是李XX还是李歘歘

每晚不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。

点关注不走失,总有一些知识点是你想要的

⛽️明天的内容是linux中配置环境变量的文件⛽️

环境变量配置文件中主要是定义对系统操作环境生效的系统默认环境变量,如PATH等;PATH、HISTSIZE、PS1、HOSTNAME等环境变量写入对应的环境变量配置文件;在linux系统中有好多这样的文件,她们有哪些区别,应当在哪些情况下使用,下文讲解一下:

首先我们先说一下几种最常见的文件,以及各个文件的概念和作用域:

/etc/environment:在系统启动时运行,用于配置与系统运行相关但与用户无关的环境变量,更改该文件配置的环境变量将影响全局。/etc/profile:此文件为系统的每位用户设置环境信息,当用户第一次登陆时,该文件被执行,并从/etc/profile.d目录(下文详尽论述)的配置文件中搜集shell的设置。/etc/bashrc:在Ubuntu和Debian中是/etc/bash.bashrc,为每一个运行bashshell的用户执行此文件,当bashshell被打开时,该文件被读取(即每次新开一个终端,就会执行bashrc)。~/.profile:当用户登入时执行,每位用户都可以使用该文件来配置专属于自己使用的shell信息。它只能登陆的时侯执行一次。~/.bashrc:该文件包含专用于你的bashshell的bash信息,当登陆时以及每次打开新的shell时,该文件被读取。不推荐在这儿配置用户专用的环境变量,由于每开一个shell,该文件就会被读取一次,效率肯定受影响。

另外,须要补充说明介绍bashrc相关的几个文件:

~/.bash_profile:每位用户都可使用该文件输入专用于自己使用的shell信息,当用户登入时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。~/.bash_logout:当每次退出系统(退出bashshell)时linux中export命令 bashrc,执行该文件。

补充:

/etc/profile.d目录中储存的是一些应用程序所需的启动脚本linux中export命令 bashrc,其中包括了颜色、语言、less、vim及which等命令的一些附加设置。这种脚本文件之所以还能被手动执行,是由于在/etc/profile被读取的时侯,会使用一个for循环句子来调用/etc/profile.d下的脚本,这种脚本文件所设置的环境变量就和/etc/profile启动时一起被设置上去了,cat/etc/profile可以看见有一段加载/etc/profile.d目录下所有.sh脚本文件的代码:

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
  . $i
fi
  done
  unset i
fi

概念有点多,傻傻分不清楚这种文件有哪些里面区别?

/etc/profile.d目录下的文件和/etc/profile如何联系上去里面早已说过了,再探讨一下她们的区别是哪些:

首先/etc/profile.d是目录,/etc/profile是文件。它们都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效。/etc/profile.d/比/etc/profile好维护,不想要哪些变量直接删掉/etc/profile.d/下对应的shell脚本即可,不用像/etc/profile须要改动此文件

bashrc和bash_profile的差别:

~/.bash_profile是交互式、login形式步入bash运行的~/.bashrc是交互式non-login形式步入bash运行的一般两者设置大致相同,所以一般后者会调用前者。所以通常优先把变量设置在.bashrc上面。诸如在crontab上面执行一个命令,.bashrc设置的环境变量会生效,而.bash_profile不会。

bashrc和profile的差别

注意:bashrc和profile这两个文件须要看linux的发行版本是否存在,不同版本不同。

如上图所示suse linux 下载,我们可以得出推论:

profile用于登陆式shell,是在用户登入后才能运行。bashrc用于每位交互式shell,是在系统启动后才会手动运行。进行设置后,可运用sourcebashrc命令更新bashrc,也可运用sourceprofile命令更新profile。/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能承继/etc/profile中的变量,她们是”兄妹”关系。

Linux系统中,环境变量根据其作用范围不同大致可以分为系统级环境变量和用户级环境变量。

自然而然地,环境变量所对应的配置文件也相应的被分成了系统级和用户级两种,及系统文件【/etc】,用户文件【~/】

文件的执行次序为:/etc/profile->(~/.bash_profile|~/.bash_login|~/.profile)->~/.bashrc->/etc/bashrc->~/.bash_logout,前面的会覆盖后面的环境

在登陆Linux时执行文件的过程如下:

在刚登陆Linux时,首先启动/etc/profile文件,

之后再启动用户目录下的~/.bash_profile、~/.bash_login或~/.profile文件中的其中一个red hat linux 下载,用房主目录下文件的执行的次序为:

~/.bash_profile->~/.bash_login->~/.profile。

假如~/.bash_profile文件存在的话,通常都会执行~/.bashrc文件。

由于在~/.bash_profile文件中通常会有下边的代码:

if [ -f ~/.bashrc ] ; then
   . ./bashrc
fi

~/.bashrc中,通常都会有以下代码:

if [ -f /etc/bashrc ] ; then
   . /etc/bashrc
fi

所以,~/.bashrc会调用/etc/bashrc文件。最后,在退出shell时,就会执行~/.bash_logout文件。

参考:

(125条消息)Linux环境下/etc/profile和/etc/profile.d的区别_jasonchen666的博客-CSDN博客

(8条消息)【笔记】etc/profile和~/.bashrc的区别_ZoeYen_的博客-CSDN博客_/etc/profile和.bashrc的区别

(8条消息)~/.profile和/etc/profile的区别_望隐少年的博客-CSDN博客_.profile

Ubuntu环境变量(.profile)加载次序-glc400-博客园()

(87条消息)Linux(Ubuntu)下配置go开发环境_晚霞与影的博客-CSDN博客_ubuntu上配置go环境

/etc/profile和~/.bash_profile区别_Shyllin的博客-CSDN博客

linux中环境变量及环境变量配置文件解读-kelelipeng-博客园()

(125条消息)Linux常用环境变量及作用和环境变量文件的详尽介绍及其加载执行次序_博主是个懒蛋的博客-CSDN博客

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复