Linux环境变量之shell中export定义全局变量和echo 变量的区别

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Linux环境变量之shell中export定义全局变量和echo 变量的区别

1、环境变量和用户变量

shell的变量,可以分为环境变量和自定义变量两种类型,两者的区别在于作用范围不一样。环境变量可以在其进程的子进程中继续有效,而自定义的变量的范围不能生效到其进程的子进程当中。

/etc/profile涉及系统的环境,即环境变量相关。这里进行修改的话会对所有的用户都起作用。/etc/profile首先会执行/etc/profile.d目录下的所有*.sh文件。

.bashrc文件(在用户的家目录下)则只对当前的用户有用。~/.basrc、~/.bash_file为当前用户目录下的配置信息。修改后使用source命令进行更新。

使用env命令:显示的是当前用户的环境变量。但是不会显示其自定义变量。

使用export命令:功能如同env一样,也是显示当前用户的环境变量,只不过该命令的输出是按照变量名进行排序的。

使用declare命令:显示当前shell中定义的所有变量,包括用户的环境变量和自定义的变量,改命令的输出是按照变量名进行排序的。

使用set命令:功能如同declare命令,显示当前shell中定义的所有变量,包括用户的环境变量和自定义的变量。

2、env

env是一个外部命令,程序文件/bin/env,用于列出所有环境变量及其赋值。但不会显示其自定义变量。显示出所有的环境变量。

[root@sc-slave mysql]# env
XDG_SESSION_ID=2
HOSTNAME=sc-slave
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000

3、export

设置环境变量。使用export设置的变量就成为了环境变量,而没有使用export 设置的则是自定义变量。但是export命令新增加的环境变量只有在每次登陆的时候有效。

用户登录到Linux系统后,系统会启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并允许shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将会有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序时创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。所以说,用户的很多shell,每个shell都是由某个shell(父shell)派生的。

在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当这个脚本程序运行时,这个定义的变量只是改脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已经定义的变量进行输出。export命令将会使系统在创建每一个新的shell时定义这个变量的一个拷贝,这个过程就称之为变量输出。

使用export就是为了我们定义一个变量时可以在子shell中被调用,而不需要重复去定义。Linux export命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。

生成环境变量的两种方法:环境变量可以在其进程的子进程中继续有效,而自定义变量则无效。

var1=“hello"
export var1
export $var1="hello

例如:增加临时环境变量。

[root@localhost ~]# LIANXI=aa
[root@localhost ~]# export PATH LIANXI=aa
[root@localhost ~]# env

4、echo

echo用显示文字、打印文字。

echo $HOME

显示环境变量HOME的值。

命令格式:

echo 【选项】【输出内容】

选项:-e :支持反斜线控制的字符转换,前面有斜线的字符将作为转义字符。

控制字符:

\a:输出警告音

\b: 退格键,也就是向左删除

\n: 换行符

\r:回车键

\t:制表符,tab键

\v:垂直制表符

\0nnn :按八进制ASCII码表输出字符,其中0为数字0,nnn是3位八进制数

\xhh :按十六进制ASCLII码表输出字符,其中hh是两位十六进制数

echo 输出字符串

给字符串加上单引号或双引号,或者什么都不加。

echo ‘aaa’

echo “aaa”

echo aaa

[root@sc-slave mysql]# echo 'aaa'
aaa
[root@sc-slave mysql]# echo "aaa"
aaa
[root@sc-slave mysql]# echo aaa
aaa

echo输出含转义字符的字符串

! 选项加上-e,字符串加双引号。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
Shell Linux
Linux-环境变量
通过合理设置和管理环境变量,可以显著提高工作效率和系统管理能力。理解并掌握这些基本操作,是每个Linux用户和管理员的必备技能。
33 13
|
2月前
|
Linux Android开发 开发者
linux m、mm、mmm函数和make的区别
通过理解和合理使用这些命令,可以更高效地进行项目构建和管理,特别是在复杂的 Android 开发环境中。
73 18
|
6月前
|
安全 Linux 应用服务中间件
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
|
6月前
|
Linux 索引
在Linux中,符号链接与硬链接有何区别?
在Linux中,符号链接与硬链接有何区别?
|
3月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
129 4
|
5月前
|
监控 Linux
Linux系统中du命令与df命令的区别与用法
总的来说,`du` 和 `df` 在磁盘管理中互补使用,能够提供全面的磁盘空间使用信息,帮助用户和管理员有效地监控和管理系统资源。
136 3
|
6月前
|
缓存 负载均衡 应用服务中间件
在Linux中,LVS与nginx有何区别?
在Linux中,LVS与nginx有何区别?
|
6月前
|
Linux 网络安全 数据安全/隐私保护
在Linux中,FTP 的主动模式和被动模式是什么?有何区别?
在Linux中,FTP 的主动模式和被动模式是什么?有何区别?
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
289 8
|
3月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1027 6