Linux环境变量相关

登录shell会从5个不同的启动文件里读取命令:
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login

$HOME/.profile

/etc/profile文件是系统上默认的bash shell的主启动文件。系统上每个用户登录时都会执行这个启动文件。

要留意的是有些Linux发行版使用了可拆卸式认证模块(Pluggable Authentication Modules,PAM)。在这种情况下,PAM文件会在bashshell启动之前处理,这些文件中可能会包含环境变量。PAM文件包括/etc/environment文件和$HOME/.pam_environment文件。

1./etc/profile文件

是bash shell默认的主启动文件。
只要登录了Linux系统,bash就会执行/etc/profile启动文件中的命令。
不同的Linux发行版在这个文件里放了不同的命令。
Ubuntu发行版和CentOS发行版的/etc/profile文件都用到了同一个特性:for语句。它用来迭代/etc/profile.d目录下的所有文件。这为Linux系统提供了一个放置特定应用程序启动文件的地方,当用户登录时,shell会执行这些文件。
 

2.$HOME目录下的启动文件
剩下的启动文件都起着同一个作用:提供一个用户专属的启动文件来定义该用户所用到的环境变量。

大多数Linux发行版只用这四个启动文件中的一到两个:

$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile

这些启动文件中的环境变量会在每次启动bash shell会话时生效。
Linux发行版在环境文件方面存在的差异非常大。这里所列出的$HOME下的那些文件并非每个用户都有。例如有些用户可能只有一个$HOME/.bash_profile文件。这很正常。

shell会按照下列顺序,运行第一个被找到的文件,余下的则被忽略:
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
注意,这个列表中并没有$HOME/.bashrc文件。这是因为该文件通常通过其他文件运行的。


交互式shell进程
如果你的bash shell不是登录系统时启动的,那么你启动的shell叫做交互式shell。
如果bash是作为交互式shell启动的,它就不会访问/etc/profile文件,只会检查用户HOME目录中的.bashrc文件。
.bashrc文件有2个作用:一是查看/etc目录下通用的bashrc文件,二是为用户提供一个定制自己的命令别名和私有脚本函数的地方。

非交互式shell
系统执行shell脚本时用的就是这种shell。它没有命令行提示符。
但是当你在系统上运行脚本时,也许希望能够运行一些特定启动的命令。为了处理这种情况,bash shell提供了BASH_ENV环境变量。当shell启动了一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件。如果有指定的文件,shell会执行该文件里的命令,这通常也包括shell脚本变量设置。

(转自链接:https://www.jianshu.com/p/9f72783e475d)
查看当前环境变量:env

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值