zoukankan      html  css  js  c++  java
  • 变量

    环境变量的查询、定义、赋值及持久化。
    环境变量($):
        全局环境变量
        局部环境变量
    
    查看环境变量
        env       -- 查看shell下的全局变量
        printenv     -- 查看shell下的全局变量
        printenv HOME -- 显示变量HOME的值
        echo $HOME    -- 显示变量HOME的值($)
        ls $HOME  -- 在HOME变量前面加$可以执行参数的命令 
        set            -- 输出全局变量、局部变量和用户自定义变量
    设置环境变量(全局变量是大写。自定义局部变量请坚持小写,这能够避免重新定义系统环境变量可能带来的灾难)
        1.设置局部环境变量
            echo $my_variable  -- 定义局部环境变量名称(该变量名不存在才能定义)
            my_variable=Hello  -- 局部环境变量赋值(字符串或数字,含空格的字符串需要单引号界定首尾)
            echo $my_variable  -- 展示局部环境变量值(环境变量存在,展示值)
        2.设置全局环境变量(需先设置局部变量,再导入全局变量)
            echo $my_variable               -- 定义局部环境变量名称
            my_variable="I am Global now"        -- 局部环境变量赋值
            export my_variable                            -- 导入到全局变量
            echo $my_variable               -- 展示环境变量值
        3.删除环境变量
         unset my_variable        -- 删除环境变量
    
    设置PATH变量
        echo $PATH
        PATH=$PATH:/home/christine/Scripts
        
    怎样让环境变量的作用持久化:
        登录时作为默认登录shell(/etc/profile文件是系统上默认的bash shell的主启动文件)
        作为非登录shell的交互式shell(如:bash进入子shell)
        作为运行脚本的非交互shell(在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。
                                                            当它读到文件的结尾EOF,shell也就终止了)
        最好是在/etc/profile.d目录中创建一个以.sh结尾的文件,把所有新的变量或修改过的变量全部放在此文件中(对所有用户)。
        对于存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一点适用于所有类型的shell进程(仅对当前用户)。
         
    bash shell支持的Bourne变量:
        CDPATH      冒号分隔的目录列表,作为 cd 命令的搜索路径
        HOME        当前用户的主目录
        IFS         shell用来将文本字符串分割成字段的一系列字符
        MAIL        当前用户收件箱的文件名(bash shell会检查这个文件,看看有没有新邮件)
        MAILPATH    冒号分隔的当前用户收件箱的文件名列表(bash shell会检查列表中的每个文件,看看有没有新邮件)
        OPTARG      getopts 命令处理的最后一个选项参数值
        OPTIND      getopts 命令处理的最后一个选项参数的索引号
        PATH        shell查找命令的目录列表,由冒号分隔
        PS1         shell命令行界面的主提示符
        PS2         shell命令行界面的次提示符
    bash shell环境变量:
        BASH                     当前shell实例的全路径名
        BASH_ALIASES             含有当前已设置别名的关联数组
        BASH_ARGC                含有传入子函数或shell脚本的参数总数的数组变量
        BASH_ARCV                含有传入子函数或shell脚本的参数的数组变量
        BASH_CMDS                关联数组,包含shell执行过的命令的所在位置
        BASH_COMMAND             shell正在执行的命令或马上就执行的命令
        BASH_ENV                 设置了的话,每个bash脚本会在运行前先尝试运行该变量定义的启动文件
        BASH_EXECUTION_STRING    使用 bash -c 选项传递过来的命令
        BASH_LINENO              含有当前执行的shell函数的源代码行号的数组变量
        BASH_REMATCH             只读数组,在使用正则表达式的比较运算符=~进行肯定匹配(positive match)时,包含了匹配到的模式和子模式
        BASH_SOURCE              含有当前正在执行的shell函数所在源文件名的数组变量
        BASH_SUBSHELL            当前子shell环境的嵌套级别(初始值是0)
        BASH_VERSINFO            含有当前运行的bash shell的主版本号和次版本号的数组变量
        BASH_VERSION             当前运行的bash shell的版本号
        BASH_XTRACEFD            若设置成了有效的文件描述符( 0 、 1 、 2 ),则 'set -x' 调试选项生成的跟踪输出可被重定向。通常用来将跟踪输出到一个文件中
        BASHOPTS                 当前启用的bash shell选项的列表
        BASHPID                  当前bash进程的PID
        COLUMNS                  当前bash shell实例所用终端的宽度
        COMP_CWORD               COMP_WORDS 变量的索引值,后者含有当前光标的位置
        COMP_LINE                当前命令行
        COMP_POINT               当前光标位置相对于当前命令起始的索引
        COMP_KEY                 用来调用shell函数补全功能的最后一个键
        COMP_TYPE                一个整数值,表示所尝试的补全类型,用以完成shell函数补全
        COMP_WORDBREAKS          Readline库中用于单词补全的词分隔字符
        COMP_WORDS               含有当前命令行所有单词的数组变量
        COMPREPLY                含有由shell函数生成的可能填充代码的数组变量
        COPROC                   占用未命名的协进程的I/O文件描述符的数组变量
        DIRSTACK                 含有目录栈当前内容的数组变量
        EMACS                    设置为 't' 时,表明emacs shell缓冲区正在工作,而行编辑功能被禁止
        ENV                      如果设置了该环境变量,在bash shell脚本运行之前会先执行已定义的启动文件(仅用于当bash shell以POSIX模式被调用时)
        EUID                     当前用户的有效用户ID(数字形式)
        FCEDIT                   供 fc 命令使用的默认编辑器
        FIGNORE                  在进行文件名补全时可以忽略后缀名列表,由冒号分隔
        FUNCNAME                 当前执行的shell函数的名称
        FUNCNEST                 当设置成非零值时,表示所允许的最大函数嵌套级数(一旦超出,当前命令即被终止)
        GLOBIGNORE               冒号分隔的模式列表,定义了在进行文件名扩展时可以忽略的一组文件名
        GROUPS                   含有当前用户属组列表的数组变量
        histchars                控制历史记录扩展,最多可有3个字符
        HISTCMD                  当前命令在历史记录中的编号
        HISTCONTROL              控制哪些命令留在历史记录列表中
        HISTFILE                 保存shell历史记录列表的文件名(默认是.bash_history)
        HISTFILESIZE             最多在历史文件中存多少行
        HISTTIMEFORMAT           如果设置了且非空,就用作格式化字符串,以显示bash历史中每条命令的时间戳
        HISTIGNORE               由冒号分隔的模式列表,用来决定历史文件中哪些命令会被忽略
        HISTSIZE                 最多在历史文件中存多少条命令
        HOSTFILE                 shell在补全主机名时读取的文件名称
        HOSTNAME                 当前主机的名称
        HOSTTYPE                 当前运行bash shell的机器
        IGNOREEOF                shell在退出前必须收到连续的 EOF 字符的数量(如果这个值不存在,默认是 1 )
        INPUTRC                  Readline初始化文件名(默认是.inputrc)
        LANG                     shell的语言环境类别
        LC_ALL                   定义了一个语言环境类别,能够覆盖 LANG 变量
        LC_COLLATE               设置对字符串排序时用的排序规则
        LC_CTYPE                 决定如何解释出现在文件名扩展和模式匹配中的字符
        LC_MESSAGES              在解释前面带有 $ 的双引号字符串时,该环境变量决定了所采用的语言环境设置
        LC_NUMERIC               决定着格式化数字时采用的语言环境设置
        LINENO                   当前执行的脚本的行号
        LINES                    定义了终端上可见的行数
        MACHTYPE                 用“CPU ? 公司 ? 系统”(CPU-company-system)格式定义的系统类型
        MAPFILE                  一个数组变量,当 mapfile 命令未指定数组变量作为参数时,它存储了 mapfile 所读入的文本
        MAILCHECK                shell查看新邮件的频率(以秒为单位,默认值是 60 )
        OLDPWD                   shell之前的工作目录
        OPTERR                   设置为1时,bash shell会显示 getopts 命令产生的错误
        OSTYPE                   定义了shell所在的操作系统
        PIPESTATUS               含有前台进程的退出状态列表的数组变量
        POSIXLY_CORRECT          设置了的话,bash会以POSIX模式启动
        PPID                     bash shell父进程的PID
        PROMPT_COMMAND           设置了的话,在命令行主提示符显示之前会执行这条命令
        PROMPT_DIRTRIM           用来定义当启用了 w 或 W 提示符字符串转义时显示的尾部目录名的数量。被删除的目录名会用一组英文句点替换
        PS3                      select 命令的提示符
        PS4                      如果使用了bash的 -x 选项,在命令行之前显示的提示信息
        PWD                      当前工作目录
        RANDOM                   返回一个0~32767的随机数(对其的赋值可作为随机数生成器的种子)
        READLINE_LINE            当使用 bind –x 命令时,存储Readline缓冲区的内容
        READLINE_POINT           当使用 bind –x 命令时,表示Readline缓冲区内容插入点的当前位置
        REPLY                    read命令的默认变量
        SECONDS                  自从shell启动到现在的秒数(对其赋值将会重置计数器)
        SHELL                    bash shell的全路径名
        SHELLOPTS                已启用bash shell选项列表,列表项之间以冒号分隔
        SHLVL                    shell的层级;每次启动一个新bash shell,该值增加1
        TIMEFORMAT               指定了shell的时间显示格式
        TMOUT                    select 和 read 命令在没输入的情况下等待多久(以秒为单位)。默认值为0,表示无限长
        TMPDIR                   目录名,保存bash shell创建的临时文件
        UID                      当前用户的真实用户ID(数字形式)
        
    变量
        在bash中,每一个变量的值都是字符串!所以不需要定义值的类型。
        cat /proc/9683/environ  -- cat /proc/$PID/environ 通过pgrep bash查看bash进程的PID是9683,从而查到bash的环境变量
        var=value  -- 赋值。(=)两端不能有空格,若value中有空格需要单引号或者双引号引用
        echo $var 等同 echo ${var}
        echo和printf都可以用双引号引用变量的值
        变量导入环境变量(export)
            my_variable="I am Global now"        -- 先给变量赋值
            export my_variable                            -- 导入到环境变量    
        获得变量字符串长度
            length=${#var}
        识别当前shell版本:echo $0 或 echo $SHELL
        检查是否为超级用户:echo $UID  -- 超级用户的UID是0
        修改Bash提示字符串
            修改~/.bashrc文件中的PS1
            PS1="e[1;31m][u@h W]\$[e[0m] " -- 提示字符串设置为红色
    生活就要逢山开路遇水搭桥,愿共勉!
  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/TianMu/p/11199297.html
Copyright © 2011-2022 走看看