shell——shell变量

    xiaoxiao2021-03-25  61

    命令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)用户变量(私有变量,本地变量)   在命令行中自己设定的.
    转载请注明原文地址: https://ju.6miu.com/read-38697.html

    最新回复(0)