zoukankan      html  css  js  c++  java
  • Shell 编程基础之变量和环境变量

     一、变量赋值和引用

    Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则:

    • 首个字符必须为字母(a-z,A-Z)或者_
    • 变量名中间不能有空格,可以使用_连接
    • 不能使用其他表达符号

    需要给变量赋值时,可以这么写

    变量名=值 

    给变量赋值时,=两边不能留空格

    取用一个变量的值,可以使用${变量名},当然在一般情况下,可以简写为$变量名

    user@ae01:~$ HELLO="HELLO"  #等号两边不能有空格
    user@ae01:~$ echo ${HELLO}
    HELLO
    user@ae01:~$ echo $HELLO
    HELLO
    user@ae01:~$

    在某些情况下,需要使用${变量名}而不能用$获取变量,

    echo $HELLOabc
    
    user@ae01:~$ echo ${HELLO}abc
    HELLOabc

    二、环境变量的设置和查看

    显示某一环境变量

    user@ae01:~$ echo $HOME
    /home/user

    设置一个环境变量的方法

    • 可以通过配置文件来添加环境变量的文件 (需要通过 source file 命令来重新读取和执行文件使得这次改动生效)
      • /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行
      • /etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量
      • ~/.bash_profile:在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变游戏量,执行用户的.bashrc文件。/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
      • ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取
      • /etc/rc.local:自动执行的脚本
    • 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
      user@ae01:~$ export HELLO="hello"
      user@ae01:~$ echo $HELLO
      hello

    使用 env 命令将显示所有的环境变量

    user@ae01:~$ env
    TERM=xterm
    SHELL=/bin/bash
    HADOOP_HOME=/usr/local/ae/hadoop-1.2.1
    ......
    _=/usr/bin/env

    使用 set 命令将显示本地所有的 Shell 变量,这里数据太多我们只通过 less 查看前面的一小部分

    user@ae01:~$ set | less
    ANT_HOME=/usr/local/ae/apache-ant-1.9.4
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    BASH_COMPLETION=/etc/bash_completion
    BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
    BASH_COMPLETION_DIR=/etc/bash_completion.d
    BASH_LINENO=()
    BASH_SOURCE=()
    BASH_VERSINFO=([0]="4" [1]="2" [2]="24" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
    BASH_VERSION='4.2.24(1)-release'
    CLASSPATH=:.:/usr/local/ae/jdk1.7.0_51/lib:/usr/local/ae/jdk1.7.0_51/jre/lib
    COLUMNS=80
    DIRSTACK=()
    EUID=1000
    GROUPS=()
    HADOOP_HOME=/usr/local/ae/hadoop-1.2.1
    HADOOP_HOME_WARN_SUPPRESS=1
    :

    使用 unset 来清除环境变量

    user@ae01:~$ echo $HELLO
    hello
    user@ae01:~$ unset HELLO
    user@ae01:~$ echo $HELLO
    
    user@ae01:~$

    使用 readonly 设置环境变量为只读

    user@ae01:~$ export HELLO="hello"
    user@ae01:~$ echo $HELLO
    hello
    user@ae01:~$ readonly HELLO

    注意:环境变量设置为只读后不能修改和删除

  • 相关阅读:
    第15章 在应用程序中使用虚拟内存(1)
    第14章 探索虚拟内存(2)
    第14章 探索虚拟内存(1)
    第13章 Windows内存体系结构
    第12章 纤程(Fiber)
    第11章 Windows线程池(3)_私有的线程池
    第11章 Windows线程池(2)_Win2008及以上的新线程池
    第11章 Windows线程池(1)_传统的Windows线程池
    第10章 同步设备I/O和异步设备I/O(4)_利用I/O完成端口实现Socket通信
    php+JQuery+Ajax简单实现页面异步刷新 (转)
  • 原文地址:https://www.cnblogs.com/tannerBG/p/4053720.html
Copyright © 2011-2022 走看看