【Linux命令行】使用Linux环境变量:全局变量、局部变量、用户定义变量

什么是环境变量

环境变量存储shell会话和工作环境信息,允许在内存中存储数据,让程序和脚本能快速访问,存储了持久的数据

分类

  • 全局变量
  • 局部变量

注意:不同的linux发行版有自己的环境变量

全局环境变量

  • 系统环境变量基本使用全大写字母,区分普通环境变量
  • 全局环境变量作用范围:所有会话和所有生成的子shell
    查看环境变量使用env或者printenv
$env  //查看环境变量
$printenv HOME  //不能使用env
/home/50485581
$echo $HOME  //引用环境变量,加上$
/home/50485581

局部环境变量

  • 作用范围:定义在它们的进程中可见
    目前没有一个命令可以查看局部环境变量
    set命令:全局变量、局部变量、用户定义变量,按照字母顺序对结果排序

创建自己的局部变量

设置局部用户定义变量

$my_variable="hello world"
$echo $my_variable
hello world
  • 字符串用双引号

注意:设置局部变量后,生成一个子shell,那么在子shell中不可用

$my_variable="hello world"
$bash
$echo $my_variable

$exit
exit
$echo $my_variable
hello world

在子进程中设置局部变量,退出子进程,局部变量失效

设置全局环境变量

先创建一个局部环境变量,再把它导出到全局环境中
使用export命令

$my_variable="hello"
$export  my_variable
$echo $my_variable
hello
$bash
$echo $my_variable
hello
$exit
exit
[50485581@shell.testing-studio.com ~]$echo $my_variable
hello

子shell中改变全局变量只对子shell有效,不会反映到父shell中,并且子shell中,使用export也不能改变父shell的值

$echo $my_variable
hello
$bash
$my_variable="world"
$echo $my_variable
world
$exit
exit
$echo $my_variable
hello

删除环境变量

使用unset命令,删除环境变量,不用$

$my_variable="hello"
$echo $my_variable
hello
$unset my_variable
$echo $my_variable

子进程中对全局变量进行修改和删除,均在子进程中生效,实际上在父进程中依然可用

默认shell环境变量

bash shell保留了unix bourne shell的环境变量,可以查看列表,不多进行描述

设置PATH环境变量

查看PATH环境变量

$echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/50485581/.local/bin:/home/50485581/bin

PATH中的目录使用冒号分割

添加PATH环境变量

$echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/50485581/.local/bin:/home/50485581/bin
$PATH=$PATH:/home/50485581/test
$echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/50485581/.local/bin:/home/50485581/bin:/home/50485581/test

定位环境变量

启动bash shell的3种方式

  • 登录时作为默认登录shell
  • 作为非登录shell的交互式shell
  • 作为运行脚本的非交互shell

登录shell

5个不同文件里提取命令

  • /etc/profile //默认的bash shell主启动文件
  • $HOME/.bash_profle,每个用户登录时都会执行
  • $HOME/.bashrc
  • $HOME/.bash_login
  • $HOME/.profile

1./etc/profile文件
每个发型版本是不一样的
2.用户目录下的4个文件
都是隐藏文件,每个用户可以编辑并添加用户的环境变量

交互shell

交互shell,比如bash命令,不会执行/etc/profile文件,会检查用户HOME下的.bashrc文件

$cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions

非交互shell

系统执行shell脚本使用,可以通过BASH_ENV来查看,但是BASH_ENV没有配置

$printenv  BASH_ENV
$

环境变量持久化

数组变量

$my_test=(one two three four  file)  //定义数组
$echo ${my_test[0]}   //输出单个值
one
$echo ${my_test[*]}   //输出整个数组
one two three four file  
$echo ${my_test[@]}
one two three four file 
$my_test[1]=six   //修改某个值
$echo ${my_test[1]}
six
$unset my_test[1]   //删除某个值
$echo ${my_test[*]}
one three four file
$unset my_test   //删除整个数组,只要加上数组名
$echo ${my_test[*]}
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值