linux环境变量及shell启动的方式

本文介绍了Linux环境变量的类型,包括全局和局部变量,以及如何设置和查看这些变量。同时,详细阐述了Shell启动的三种方式:登录Shell、交互式Shell和非交互式Shell,并解析了启动过程涉及的配置文件。此外,还讨论了环境变量的持久化设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux环境变量

在bash shell种,环境变量用于存储有关shell会话和工作环境的信息。环境变量分为两类:

  • 全局变量
  • 局部变量

全局变量对于shell会话和所有生成的子shell都是可见的。局部变量只对创建他们的shell可见。
查看全局变量,可以使用env或printenv命令。
使用set命令,可以查看所有的环境变量,包括局部变量、全局变量以及用户定义变量。用户定义变量也分局部环境变量和全局环境变量。

设置局部用户定义变量

按照bash shell的惯例,所有的环境变量名均使用大写字母,因此用户定义局部变量时要坚持使用小写字母。

var_name=var_value

局部环境变量,只能在当前shell中使用,在子shell中不可用。如果在子进程中设置了局部变量,一旦退出了子进程,该局部变量就不可用。

设置全局环境变量

如果在当前进程中设置了全局环境变量,那么在当前shell创建的子shell中,该变量都是可用的。创建全局环境变量的方法是:

var_name=var_value
export var_name

修改子shell中全局环境变量,并不会影响父shell中该变量的值。
在子shell中甚至无法使用export命令改变父shell中全局环境变量的值,也无法用unset删除全局环境变量。

shell启动的方式

  1. 作为默认登录shell
  2. 作为非登录shell的交互式shell
  3. 作为运行脚本的非交互式shell

登录shell

启动文件执行的顺序:

  1. /etc/profile 定义一些环境变量(PATH/USER/HOSTNAME/HISTSIZE等)
    读取/etc/profile.d/*.sh(颜色、语言、执行别名等)
  2. ~/.bash_profile、~/.bash_login、~/.profile(依次只读取其中一个)
  3. ~/.bash_profile会调用~/.bashrc(如果存在),~/.bashrc会调用/etc/bashrc(如果存在)

可以用source指令加载脚本的变更

交互式shell:

不需要登录即可运行的shell,如su和原bash下的新bash动作
~/.bashrc、/etc/bashrc

非交互式shell

系统执行shell脚本时用的是这种shell。为了在运行脚本时运行一些特定启动的命令,bash shell提供了BASH_ENV环境变量,它会检查这个环境变量来查看要执行的启动文件。
有些shell脚本是通过启动一个子shel来执行的,子shell可以继承父shell导出过的变量。

环境变量持久化

如果想持久化全局环境变量,最好在/etc/profile.d目录中创建一个以.sh结尾的文件,将新增或修改过的全局环境变量放置在这个文件中。
在大多数发行版中,用~/.bashrc文件存储个人用户永久性bash shell变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值