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.
......
_=/usr/bin/env
使用 set 命令将显示本地所有的 Shell 变量,这里数据太多我们只通过 less 查看前面的一小部分
user@ae01:~$ set | less
ANT_HOME=/usr/local/ae/apache-ant-1.9.
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=([]="" []="" []="" []="" []="release" []="x86_64-pc-linux-gnu")
BASH_VERSION='4.2.24(1)-release'
CLASSPATH=:.:/usr/local/ae/jdk1..0_51/lib:/usr/local/ae/jdk1..0_51/jre/lib
COLUMNS=
DIRSTACK=()
EUID=
GROUPS=()
HADOOP_HOME=/usr/local/ae/hadoop-1.2.
HADOOP_HOME_WARN_SUPPRESS=
:
使用 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
注意:环境变量设置为只读后不能修改和删除
Shell 编程基础之变量和环境变量的更多相关文章
- shell-bash学习01基础、打印、环境变量
基础 终端提示符: username@hostname$; $: 一般用户 #:root用户 运行脚本 Bash执行: * bash script.sh; 直接运行: 脚本开头添加shebang起始: ...
- 玩转变量、环境变量以及数学运算(shell)
变量和环境变量 var=value 给变量赋值,输出语句:$ echo $var或者是$ echo ${var},记住中间有个空格 例如:name="coffee" age ...
- Shell变量之自定义变量、环境变量
1:环境变量 环境变量可以帮我们达到很多功能-包括家目录的变换啊.提示字符的显示啊.运行文件搜寻的路径啊等等的那么,既然环境变量有那么多的功能,问一下,目前我的 shell 环境中, 有 ...
- java基础学习总结——java环境变量配置(转)
只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...
- shell编程系列1--shell脚本中的变量替换
shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹 ...
- Shell系列(10)- bash环境变量(3)
环境变量与用户自定义变量的区别 环境变量是全局变量,用户自定义变量是局部变量. 用户自定义变量只在当前的 shell 中生效,环境变量在当前 shell 和这个 shell 的所有子 shell 中生 ...
- 【转】Shell编程基础篇-下
[转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...
- 【转】Shell编程基础篇-上
[转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...
- shell编程基础(转载)
Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...
- shell编程基础进阶
为什么学习shell编程 shell脚本语言是实现linux/unix 系统管理机自动化运维所必备的重要工具,linux/unix系统的底层及基础应用软件的核心大部分涉及shell脚本的内容.每一个合 ...
随机推荐
- Makefile_:=与=的区别
1."=" make会将整个makefile展开后,再决定变量的值.也就是说,变量的值将会是整个makefile中最后被指定的值.看例子: x = foo y ...
- NYOJ题目611练练
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAAJ1CAIAAACgqiqJAAAgAElEQVR4nO3du27jSp4HYL+Ecj2IYz
- Mac系统下使用VirtualBox虚拟机安装win7--第五步 共享文件夹设置
1.启动virtualbox--选中win7虚拟机--点击设置--点击共享文件夹--点击右侧按钮添加共享文件夹
- Clr Via C#读书笔记---线程基础
趣闻:我是一个线程:http://kb.cnblogs.com/page/542462/ 进程与线程 进程:应用程序的一个实例使用的资源的集合.每个进程都被赋予了一个虚拟地址空间. 线程:对CPU进行 ...
- SQLServer多表连接查询
双表内部连接查询 select wName,dName from DepartMent,Worker where DepartMent.dID=Worker.did select wName,dNam ...
- .net学习之CTS、CLS和CLR
CLR:公共语言运行时,就是所有.net语言写的程序的公共运行时环境,比如C#.VB.Net等语言写的程序需要运行在CLR上,然后CLR解析执行操作系统的相关指令,CLR是.net程序运行在操作系统的 ...
- IReport问题整理
1. 问题:IReport如何实现变量字段$F{ propertyName}赋值为一个NULL对象时不显示”null”, 而显示为空白? 解决方法:选中动态单元格,右键选择属性,在弹出对话框TextF ...
- centos6.4下安装php的imagick和imagemagick扩展教程
imagick在centos6.4的安装方法: .安装ImageMagick 代码如下: wget http://soft.vpser.net/web/imagemagick/ImageMagick- ...
- PMP 第四章 项目整合管理
1.什么是整合管理,整合什么?如何整合? 项目整合管理包括识别 定义 组合 统一与协调项目管理过组的个过程及项目管理活动二进行的各种过程和活动. 整合兼具统一 合并 连接和一体化的性质,对 ...
- sql语句中----删除表数据的"三兄弟"
说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了 现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的 老大- ...