shell——shell变量

命令env 列出 系统预设的全部 环境变量
#env
常见变量
#echo $PATH 决定了shell讲到哪些目录中寻找命令或程序
#echo $HOME 当前用户主目录
#echo $PWD 当前目录
#echo $LOGNAME 当前用户登录名
HISTSIZE 历史记录数
HOSTNAME 主机名称
SHELL 当前用户shell变量
LANG 语言相关环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录


命令set 列出全部预设的全部环境变量,包括env列出的是系统变量、用户自定义变量、额外变量
#set
set不仅可以显示系统预设的变量,也可以列出用户自定义的变量显示出来。
#myname=Aming
#echo $myname
Aming
#set |grep myname
myname=Aming
当前shell设定的变量,只针对当前shell有效。
#bash 此命令进入下一个子shell中
#echo $myname
没有返回结果
#exit
#echo $myname
Aming

1、让系统内所有用户登录后都能使用该变量
在/etc/profile文件最末行加入 export myname=Aming
运行 source /etc/profile 生效
2、只让当前用户使用该变量
用户主目录下的.bashrc 文件最末行加入 export myname=Aming
运行 source /etc/profile 生效

设定变量的规则
格式 a=b a为变量名,b为变量内容。前后没有空格
变量名由英文、数字以及下划线组成, 不能数字开头
变量内容b带有特殊字符如空格,需要加上单引号
myname='Aming Li'
变量内容b本身带有单引号,需要双引号
myname="Aming's"
变量内容b需要其他命令运行结果,使用 反引号
myname=`pwd`
变量内容可以累加其他变量内容,需要双引号
#myname="$LOGNAME"Aming
#echo $myname
rootAming

单引号双引号的区别
使用双引号,不会取消里面出现的特殊字符本身的作用。
使用单引号,里面的特殊字符全部失去本身的作用。
单引号里面所有特殊符号都会变成普通符号,比如 '123$a' 这里面的$a就不是引用变量了, 如果用双引号就可以引用变量 "123$a" 我具体举个例子吧:
[root@localhost ~]# a=9; echo '123$a'; b=8; echo "123$b"
123$a
1238

当前shell运行bash,会进入一个子bash。
pstree 会把Linux系统中所有进程通过树形结构打印出来。在父shell中设定变量,子shell不会生效,如果要生效,需要export指令。
#abc=123
#export abc
export其实是声明变量的意思,让该shell的子shell知道变量的值。export不加变量值,  仅仅是可以打印出当前用户的一些变量出来。
取消变量
#unset abc
#unset myname


NOTE: 全局变量,仅仅在当前shell下或者当前的脚本里面有效果。
/etc/profile 里面,每次登陆,所有终端,甚至shell脚本里面都有效果。

env,set,export三个命令的区别
1、set,env和export这三个命令都可以用来显示shell变量
[root@localhost root]# aaa=bbb 
[root@localhost root]# echo $aaa 
bbb 
[root@localhost root]# set |grep aaa 
aaa=bbb 
[root@localhost root]# env |grep aaa 
[root@localhost root]# export aaa 
[root@localhost root]# env |grep aaa 
aaa=bbb
set 系统,当前,自定义  工作中不常用
env 系统 工作中不常用
export 显示当前导出成用户变量的shell变量 
每个shell都有自己特有的变量,这和用户变量是不同的。当前用户变量和你用什么shell无关,不管你用什么shell都是存在的。比如HOME,SHELL等这些变量,但shell有自己的变量,不同的shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的。
export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。

2、unix shell的变量分类
在Shell中有三种变量:内部变量,环境变量,用户变量。
内部变量:系统提供,不用定义,不能修改
环境变量:系统提供,不用定义,可以修改,可以利用export将用户变量转为环境变量.
用户变量:用户定义,可以修改
(1)内部变量(系统变量,环境变量,参数变量,预定义变量)
内部变量是Linux所提供的一种特殊类型的变量,这类变量在程序中用来作出判断。在shell程序内这类变量的值是不能修改的。
   表示方法     描述
   $n     $1 表示第一个参数,$2 表示第二个参数 ...
   $#     命令行参数的个数
   $0     当前程序的名称
   $?     前一个命令或函数的返回码
   $*     以"参数1 参数2 ... " 形式保存所有参数
   $@     以"参数1" "参数2" ... 形式保存所有参数
   $$     本程序的(进程ID号)PID
(2) 环境变量
  Linux环境(也称为shell环境)由许多变量及这些变量的值组成,由这些变量和变量的值决定环境外观。这些变量就是环境变量。
包括两部分,一是,由系统设置的,主要包括: HOME,LOGNAME,MAIL,PATH,PS1,PWD,SHELL,TERM
二是,用户在命令行中设置的,使用export命令,但是用户注销时值将丢失
(3)用户变量(私有变量,本地变量)
  在命令行中自己设定的.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值