美文网首页
shell(2)变量的核心基础知识与实践

shell(2)变量的核心基础知识与实践

作者: August________ | 来源:发表于2019-11-14 13:06 被阅读0次

    shell(2)变量的核心基础知识与实践

    什么是shell变量

    • 变量就是用一个固定的字符串(也可能是字符、数字等的组合),代替更多,更复杂的内容,该内容里可能还会包含变量、路径、字符串等其他的内容。
    • 变量是暂时存储数据的地方及数据标记,所存储的数据存在于内存空间中,通过调用内存空间中的变量的名字就可以取出与变量对应的数据。
    1. 变量的特性
    • 默认情况下,在bash shell中是不会区分变量类型的,例如:常见的变量类型为正数、字符串、小数等。这和其他强语言是有区别的,当然如果需要制定shell变量的类型,也就可以使用declare显示定义变量的类型,
    1. 变量类型
    • 变量可分为两类:环境变量(全局变量)和普通变量(局部变量)
    • 环境变量:可以在创建他们的shell及其派生出来的任意子进程shell中使用,环境变量又可分为自定义变量和bash内置环境变量。
    • 普通环境变量:只能在他们创建它们的Shell函数或Shell脚本中使用,普通变量一般由开发者在开发脚本程序是创建。

    环境变量

    • 环境变量一般是指export内置命令导出的变量,用于定义shell的环境变量,保证Shell命令的正确执行,shell通过环境变量确定登录用户名,命令路径、终端类型、登录目录等,所有的环境变量都是系统的全局变量,可用于所有的子进程中

    • 查看设置的变量时,有三个命令可以显示变量的值:set、env和declare(代替早期的typeset),set命令输出所有的变量,包括全局变量和局部变量,env值显示局部变量,declare命令输出所有的变量、函数、正数和已经导出的变量, set -o命令显示bash Shell的所有参数的配置信息。

    [root@aaaaaaaa ~]# env | tail
    LOGNAME=root
    SSH_CONNECTION=166.111.152.116 58283 192.168.0.99 22
    MODULESHOME=/usr/share/Modules
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0
    DISPLAY=localhost:10.0
    HISTTIMEFORMAT=%F %T root 
    BASH_FUNC_module()=() {  eval `/usr/bin/modulecmd bash $*`
    }
    _=/usr/bin/env
    
    [root@aaaaaaaa ~]# declare | tail
        done
    }
    _module_not_yet_loaded () 
    { 
        comm -23 <(_module_avail|sort) <(tr : '\n' <<<${LOADEDMODULES}|sort)
    }
    module () 
    { 
        eval `/usr/bin/modulecmd bash $*`
    }
    [root@aaaaaaaa ~]# set -o | head
    allexport       off
    braceexpand     on
    emacs           on
    errexit         off
    errtrace        off
    functrace       off
    hashall         on
    histexpand      on
    history         on
    ignoreeof       off
    
    

    自定义的环境变量

    1. 设置环境变量
    • 设置环境变量时使用export 命令,除了export命令,带-x选项的declare内置命令也可以完成同样的命令。
    [root@aaaaaaaa ~]# grep OLD /etc/profile
    export OLDBOY='oldboy'
    [root@aaaaaaaa ~]# source  /etc/profile
    [root@aaaaaaaa ~]# echo $OLDBOY
    oldboy
    [root@aaaaaaaa ~]# env | grep OLDBOY
    OLDBOY=oldboy
    
    
    • 用户的环境变量配置:
    [root@aaaaaaaa ~]# ls /root/.bashrc 
    /root/.bashrc
    [root@aaaaaaaa ~]# ls /root/.bash_profile 
    /root/.bash_profile
    
    
    • 全局的环境变量配置
    [root@aaaaaaaa ~]# ls /etc/profile
    /etc/profile
    [root@aaaaaaaa ~]# ls /etc/bashrc 
    /etc/bashrc
    [root@aaaaaaaa ~]# ls /etc/profile.d/
    
    
    1. 设置登录提示的两种方式
    • 第一种的在/etc/motd里增加提示的字符串,
    [root@aaaaaaaa ~]# cat /etc/motd 
        
        Welcome to Huawei Cloud Service
    
    • 第二种在/etc/profile.d下面增加如下脚本。
    [root@aaaaaaaa ~]# cd /etc/profile.d/
    [root@aaaaaaaa profile.d]# vim lhf.sh
    [root@aaaaaaaa ~]# cat /etc/profile.d/lhf.sh 
    echo "Here is LHF's computer"
    
    

    显示与取消环境变量

    1. 通过echo 或printf命令打印环境变量
    [root@aaaaaaaa ~]# echo $HOME
    /root
    [root@aaaaaaaa ~]# echo $UID
    0
    [root@aaaaaaaa ~]# echo $PWD
    /root
    [root@aaaaaaaa ~]# echo $SHELL
    /bin/bash
    [root@aaaaaaaa ~]# echo $USER
    root
    
    1. 用env或set显示默认的环境变量
    • 用env显示默认的环境变量
    [root@aaaaaaaa ~]# env
    XDG_SESSION_ID=1467
    HOSTNAME=aaaaaaaa
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=10000
    SSH_CLIENT=114.243.62.211 50746 22
    SSH_TTY=/dev/pts/0
    USER=root
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
    MAIL=/var/spool/mail/root
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/root
    LANG=en_US.UTF-8
    MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles
    LOADEDMODULES=
    OLDBOY=oldboy
    HISTCONTROL=ignoredups
    SHLVL=1
    HOME=/root
    LOGNAME=root
    SSH_CONNECTION=114.243.62.211 50746 192.168.0.99 22
    MODULESHOME=/usr/share/Modules
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0
    DISPLAY=localhost:10.0
    HISTTIMEFORMAT=%F %T root 
    BASH_FUNC_module()=() {  eval `/usr/bin/modulecmd bash $*`
    }
    _=/usr/bin/env
    
    • 用set显示环境变量
    [root@aaaaaaaa ~]# set
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    BASH_LINENO=()
    BASH_SOURCE=()
    BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")
    BASH_VERSION='4.2.46(2)-release'
    COLUMNS=104
    DIRSTACK=()
    DISPLAY=localhost:10.0
    EUID=0
    GROUPS=()
    HISTCONTROL=ignoredups
    HISTFILE=/root/.bash_history
    
    

    相关文章

      网友评论

          本文标题:shell(2)变量的核心基础知识与实践

          本文链接:https://www.haomeiwen.com/subject/owhrictx.html