Linux 下Shell变量,环境变量的联系与区别
Linux下Shell变量,环境变量的联系与区别
by:授客 QQ:1033553122
1、 简介
linux下的变量可分成两种:Shell变量和环境变量。
Shell变量,又称本地变量,包括私有变量以及用户变量,不同类的shell有不同的私有变量,bash,ksh,csh等,每种shell的私有变量都不一样
环境变量,又称用户变量,与shell无关
常规定义变量的方法:变量名=变量值
注意:
1.变量名和=号之间不能有空格,否则shell会把变量名当成命令
2.变量名称一般使用大写字母
2、 常用的相关命令
env命令:显示当前用户的环境变量
set命令:不加参数,显示当前shell的所有本地设置的Shell变量,否则设置shell变量
unset命令:unset为shell内建指令,删除变量或函数。
exprot命令:显示(设置)当前导出成用户变量的shell变量(注意:export为bash或类bash私有的命令)
echo $变量名:查看变量值(其中,$变量:引用变量的意思)
3、 示例
a) 使用env命令显示当前用户的所有环境变量
[laiyu@localhost ~]$ env
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
USER=laiyu
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;...
MAIL=/var/spool/mail/laiyu
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/laiyu/bin
PWD=/home/laiyu
LANG=en_US.UTF-8
...
HOME=/home/laiyu
LOGNAME=laiyu
...
_=/bin/env
b) 使用set命令显示当前shell的所有本地Shell变量
[root@localhost ~]# set | more
BASH=/bin/bash
...
BASH_CMDS=()
...
c) 使用unset命令来清除变量(不管是shell变量还是环境变量)
[laiyu@localhost ~]$ export TEST=test #增加一个环境变量TEST
[laiyu@localhost ~]$ env | grep TEST #查看增加的变量
TEST=test
[laiyu@localhost ~]$ unset $TEST #删除环境变量TEST(这里TEST前有无美元符都一样)
[laiyu@localhost ~]$ env | grep TEST #输出为空
注意:unset只能删除非只读变量
d) 使用echo命令显示环境变量(HOME变量为例)
[root@localhost ~]# echo $HOME
/root
e) 使用export命令将shell变量导出为用户变量,并显示
列出所有的Shell赋予程序的环境变量
[root@localhost ~]# export -p #等同export
...
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin/:/usr/local/tsung/bin"
...
把shell变量导出为用户变量
[root@localhost ~]# SHOUKE=ishouke #定义shell变量
[root@localhost ~]# echo $SHOUKE
ishouke
#查看当前用户的用户变量是否存在SHOUKE变量,结果是不存在
[root@localhost ~]# env | grep SHOUKE
#查看当前shell的本地变量是否存在SHOUKE变量,结果是不存在
[root@localhost ~]# set | grep SHOUKE
SHOUKE=ishouke
#查看Shell赋予程序的环境变量中是否存在SHOUKE变量,结果不存在
[root@localhost ~]# export | grep SHOUKE
#导出shell变量为用户变量
[root@localhost ~]# export SHOUKE
[root@localhost ~]# env | grep SHOUKE
SHOUKE=ishouke
[root@localhost ~]#
--------------------------------------
也可以如下方式使用export
[root@localhost ~]# export SHOUKE=ishouke
[root@localhost ~]# env | grep SHOUKE
SHOUKE=ishouke
[root@localhost ~]#
注意:以上的设置仅在当前打开的shell窗口或或其子shell窗口中起作用,临时的,关闭当前shell窗口或重启机器,则刚才的设置失效,,或打开一个新窗口,设置在新窗口中不起作用。
作者:授客
微信/QQ:1033553122
全国软件测试QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
微信打赏
支付宝打赏 全国软件测试交流QQ群
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库