设为首页 收藏本站
查看: 810|回复: 0

SHELL变量及环境

[复制链接]

尚未签到

发表于 2018-8-23 09:20:54 | 显示全部楼层 |阅读模式
  用户自定义变量:
  1.定义SHELL变量:SHELL支持字符串值的变量,SHELL变量不需要提前定义或初始化,没有初始化的SHELL变量被当做空字符串。大家通常通过复制对变量进行说明和初始化,还可以对变量多次赋值,改变变量的值。
  变量赋值的格式是: name=string
  name是变量的名字,它是下划线或字母开头的下划线字母和数字组成的字符串,为了统一格式我们一般把自定义变量用小写表示。=是赋值号,=两边不能有空格,否则SHELL把它当做命令执行。string是变量的值,如果string带有空格、制表符或者换行符,必须用‘’或者“”包起来,“”中间可以变量替换,‘’不能进行变量替换。
  变量赋值举例:
  $ var1=string1
  $ var2=string2
  变量的值都是数字的时候才允许进行数字计算。在新版的bash中可以使用declare 、typeset命令声明变量及属性,但是为了保证shell不同版本的兼容,不是必要的情况下不要对变量进行声明。
  2.变量替换和输出:在name前面加上$符号进行变量替换,就是用$name替换出变量的值,即用string代替$name。字符串连接的时候为了区分出变量名防止混淆可以使用${name}的形式。
  输出变量可以使用内置命令echo或者printf
  定义和使用变量举例:
  v1=dog
  $ echo I love $v1
  $ I love dog
  //显示常量
  $ echo I love you
  $ I love you
  $ echo 'I love you'
  $I love you
  $ echo "I love you"
  $I love you
  //上面的几个例子由于字符串中间没有特殊字符所以使用'' 和 ""的效果是一样的。
  $ echo I'd like dog
  >
  //由于字符串中带有特殊字符' 所以SHELL认为没有对应的'匹配,命令没有输出完全回车后继续输入命令,如果想结束可以使用+c 命令结束。
  //如果想输出特殊字符可以使用转义字符/
  $ echo I/'d like dog
  $I'd like dog
  //定义变量
  $ v1=centos
  $ echo $v1
  $ centos
  //变量赋值的时候如果有空格用''括起来
  $ v1='centos 5'
  $ echo I love $v1
  $ I love centos 5
  例子就举到这,大家可以勤加练习来领悟这些内容。下面来说说SHELL变量的作用域
  SHELL变量作用域:
  SHELL变量有自己的作用域,变量分为局部变量和全局变量,默认情况下所有用户自定义变量都是局部变量,所有环境变量都是全局变量。
  局部变量的作用域仅仅是命令行所在的SHELL和当前SHELL运行的过程中。
  全局变量的作用域是定义这个变量的SHELL及其所有子孙SHELL。
  要定义全局变量可以使用export命令,下面我们来举例:
  把多个局部变量变为全局变量:
  export var1 var2 var3
  把多个全局变量变为局部变量:
  export -n var1 var2 var3
  一次性给多个全局变量赋值:
  export var1=string1 var2=string2 var3=string3
  下面我们来对变量作用域来举个例子:
  //这里分别设置局部变量var1和var2
  $ var1=1
  $ var2=2
  //这里把局部变量var2变为全局变量
  $ export var2
  //下面设置全局变量var3和var4
  $ export var3=3 var4=4
  //在当前SHELL输出一个var1 var2 var3 var4
  $ echo var1 var2 var3 var4
  $ 1 2 3 4
  //这里我们进入子SHELL看看四个变量的变化
  //这里我们输出var1不会得到任何内容,因为var1是局部变量,所以进入子SHELL以后不会再有值
  $ bash
  $ echo var1
  //我们再输出var2 var3 var4的值看看
  $ echo var2 var3 var4
  $ 2 3 4
  //这里把var2变成局部变量
  $ export -n var2
  //输出var2
  $ echo var2
  $ 2
  //进入孙SHELL
  $ bash
  //输出var2,会发现没有结果
  $ echo var2
  $
  //输出 var3 var4,会得到结果,因为他们依然是全局变量
  $ echo var3 var4
  $ 3 4
  //返回父SHELL
  $ exit
  //显示变量var2 var3 var4的值
  $ echo var2 var3 var4
  $ 2 3 4
  //改变var2 的值
  $ var2=22
  $ echo var2 var3 var4
  $ 22 3 4
  //返回父SHELL
  $  exit
  //再输出var2看看,发现刚才修改的var2值没有变化,子SHELL中变量修改不会回传给父SHELL
  $  echo var2
  $ 2
  环境变量:
  环境变量用来定义SHELL环境,保证SHELL命令正常执行。SHELL会用环境变量来进行各种定位或者身份认证,环境变量都是全局变量(可以传递给子孙SHELL),子SHELL对环境变量的修改不影响父SHELL。
  下面介绍一下常用的环境变量:
  BASH            bash的完整路径
  HOME           用户的主目录
  HISTFILE       保存历史命令的文件
  HISTSIZE       保存历史命令的大小
  oldpwd          上一个工作目录
  pwd               当前工作目录
  USER             当前用户名
  UID                当前用户ID
  用户工作环境设置:
  我们登陆系统的时候系统会给我们分配一个工作环境,不需要用户每次登陆都自行进行设置。每个用户都有一个自己的工作环境,每个人的工作环境之间都很相似,但又各有不同。就像办公楼里面每个人都会有自己的工作环境,办公楼里的温度灯光等条件都是相似的,但是每个人的办公间又会有不同,比如文员的办公间可能会有打印机,安保部门的办公环境就没有打印机。
  SHELL的工作环境设置分为系统工作环境和用户设置的用户工作环境,设置系统工作环境会使所有登陆的用户都生效,设置用户设置的工作环境只对设置的用户生效。
  用户工作环境又分为登陆环境和非登陆环境,登陆环境是用户登陆以后的SHELL环境,非登录环境是用户进入子SHELL的情况。
  下面介绍一下各个情况下的环境文件。
  系统工作环境设置文件:
  登录环境:/etc/profile
  非登录环境:/etc/bashrc
  用户设置的工作环境文件:
  登录环境:$HOME/.profile
  非登录环境:$HOME/.bashrc


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555380-1-1.html 上篇帖子: Shell学习#数组 下篇帖子: Shell语法基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表