shell编程笔记14----环境与shell变量
时间:2006-10-21 来源:fdmtdmcdm
第十四章 环境与shell变量
shell变量包括本地变量和环境变量
变量可以定制用户的工作环境
shell可以分为两类
一是sh:bourne shell,bash,ksh,提示符是$
一是csh:csh,tcsh,提示符是% 1、本地变量 在用户现在的shell生命周期的脚本中使用,如果用户在shell中启动另一个进程或退出,此值将无效。
变量可以用{}括起来 设置本地变量 sh和ksh
varible_name=value 或 ${varible_name=value} csh和tcsh
set varible_name=value 变量设置时的不同模式 varible_name=value 设置实际值到value
varible_name+value 如果varible_name有值,则重设其值
varible_name:?value 如果未设置varible_value,显示未定义用户错误信息
varible_name?value 如果未设置varible_value,显示系统错误信息
varible_name:=value 如果未设置varible_value,设置其值
varible_name:-value 同上,但是取值并不设置到varible_value,可以被替换 显示变量,用echo显示,在变量名前加$ $name=john
$echo ${name}
$john 清除变量 unset varible_name
变量设置和清除 $ name=test
$ echo $name
test
$ unset name
$ echo $name $ 显示所有本地变量
$ set
EDITOR=vi
ERRNO=25
FCEDIT=/bin/ed
HOME=/export/home/xxxuser
HZ=100
IFS='
'
INFORMIXDIR=/opt/informix
INFORMIXSERVER=resserver
LANG=C
LINENO=1
LOGNAME=xxxuser
MAIL=/var/mail/xxxuser
MAILCHECK=600
ONCONFIG=onconfig
OPTIND=1
PATH=/bin:/usr/bin:/opt/informix:/opt/informix/bin:/opt/informix/etc:.
PPID=9617
PS1='$ '
PS2='> '
PS3='#? '
PS4='+ '
PWD=/export/home/xxxuser/xie/test
RANDOM=18876
SECONDS=1
SHELL=/bin/csh
TERM=vt100
TMOUT=0
TZ=PRC
USER=xxxuser
_
_INIT_NET_STRATEGY=none
_INIT_PREV_LEVEL=S
_INIT_RUN_LEVEL=3
_INIT_RUN_NPREV=0
_INIT_UTS_ISA=sparc
_INIT_UTS_MACHINE=sun4u
_INIT_UTS_NODENAME=xxxdb
_INIT_UTS_PLATFORM=SUNW,Sun-Fire-V890
_INIT_UTS_RELEASE=5.8
_INIT_UTS_SYSNAME=SunOS
_INIT_UTS_VERSION=Generic_117350-30 测试变量是否已经设置 如果没有设置,则使用默认值,但默认值不会传递给该变量,如下所示
$ echo ${name:-xie}
xie
$ echo $name $ name=wen
$ echo $name
wen
$ echo ${name:-xie}
wen
使用该值并传递给该变量
$ echo $stu $ echo ${stu:=blue}
blue
$ echo $stu
blue 测试变量是否设置,如果未设置,则返回一空串
$ echo $good $ echo ${good:+old} $ echo ${stu:+red}
red
$ echo $stu
blue 设置只读变量 varible_name=value
readonly varible_name
2、环境变量
环境变量用于所有用户进程,称为子进程,登陆进程称为父进程
环境变量可以在命令行中设置,但用户注销后在命令行设置的环境变量值将丢失。所以最好在.profile文件中配置,每次登陆时这些环境变量将进行初始化。 设置环境变量 sh设置
VARIBLE_NAME=value
export VARIBLE_NAME csh设置
setenv VARIBLE_NAME value
显示环境变量
$VARIBLE_NAME 显示所有环境变量
env HOME=/export/home/xxxuser
PATH=/bin:/usr/bin:/opt/informix:/opt/informix/bin:/opt/informix/etc:.
LOGNAME=xxxuser
HZ=100
TERM=vt100
TZ=PRC
SHELL=/bin/csh
MAIL=/var/mail/xxxuser
_INIT_NET_STRATEGY=none
_INIT_PREV_LEVEL=S
_INIT_RUN_LEVEL=3
_INIT_RUN_NPREV=0
_INIT_UTS_ISA=sparc
_INIT_UTS_MACHINE=sun4u
_INIT_UTS_NODENAME=xxxdb
_INIT_UTS_PLATFORM=SUNW,Sun-Fire-V890
_INIT_UTS_RELEASE=5.8
_INIT_UTS_SYSNAME=SunOS
_INIT_UTS_VERSION=Generic_117350-30
PWD=/export/home/xxxuser/xie/test
USER=xxxuser
INFORMIXSERVER=resserver
INFORMIXDIR=/opt/informix
ONCONFIG=onconfig
LANG=C
EDITOR=vi
清除环境变量
unset VARIBLE_NAME 嵌入shell变量 预留的环境变量名
CDPATH改变路径变量
EXINIT变量保存使用vi编辑器时的初始化选项
HOME家目录,passwd文件倒数第二列的目录
IFS域分割符
LOGNAME登陆名
MAIL邮箱路径名
MAILCHECK检查新邮件
MAILPATH多个邮箱时设置,将覆盖MAIL变量
PATH命令或脚本执行时查找路径
PS1提示符,缺省为$
PS2附属提示符,缺省为>
SHELL缺省shell
TERMINFO终端配置文件的位置
TERM终端类型
TZ时区 其他环境变量
EDITOR编辑器
PWD当前路径
PAGER保存屏幕翻页命令
MANPATH保存man文件的路径
PRINTER缺省打印机名 3、位置变量 位置变量是只读变量
$0--$9
$0表示脚本名字
4、特定变量 $#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数
$$脚本运行的当前进程ID
$!后台运行的最后一个进程的进程ID
$@同$#,使用时加引号
$-显示shell使用的当前选项
$?显示最后命令的退出状态,0表示没有错误
变量可以定制用户的工作环境
shell可以分为两类
一是sh:bourne shell,bash,ksh,提示符是$
一是csh:csh,tcsh,提示符是% 1、本地变量 在用户现在的shell生命周期的脚本中使用,如果用户在shell中启动另一个进程或退出,此值将无效。
变量可以用{}括起来 设置本地变量 sh和ksh
varible_name=value 或 ${varible_name=value} csh和tcsh
set varible_name=value 变量设置时的不同模式 varible_name=value 设置实际值到value
varible_name+value 如果varible_name有值,则重设其值
varible_name:?value 如果未设置varible_value,显示未定义用户错误信息
varible_name?value 如果未设置varible_value,显示系统错误信息
varible_name:=value 如果未设置varible_value,设置其值
varible_name:-value 同上,但是取值并不设置到varible_value,可以被替换 显示变量,用echo显示,在变量名前加$ $name=john
$echo ${name}
$john 清除变量 unset varible_name
变量设置和清除 $ name=test
$ echo $name
test
$ unset name
$ echo $name $ 显示所有本地变量
$ set
EDITOR=vi
ERRNO=25
FCEDIT=/bin/ed
HOME=/export/home/xxxuser
HZ=100
IFS='
'
INFORMIXDIR=/opt/informix
INFORMIXSERVER=resserver
LANG=C
LINENO=1
LOGNAME=xxxuser
MAIL=/var/mail/xxxuser
MAILCHECK=600
ONCONFIG=onconfig
OPTIND=1
PATH=/bin:/usr/bin:/opt/informix:/opt/informix/bin:/opt/informix/etc:.
PPID=9617
PS1='$ '
PS2='> '
PS3='#? '
PS4='+ '
PWD=/export/home/xxxuser/xie/test
RANDOM=18876
SECONDS=1
SHELL=/bin/csh
TERM=vt100
TMOUT=0
TZ=PRC
USER=xxxuser
_
_INIT_NET_STRATEGY=none
_INIT_PREV_LEVEL=S
_INIT_RUN_LEVEL=3
_INIT_RUN_NPREV=0
_INIT_UTS_ISA=sparc
_INIT_UTS_MACHINE=sun4u
_INIT_UTS_NODENAME=xxxdb
_INIT_UTS_PLATFORM=SUNW,Sun-Fire-V890
_INIT_UTS_RELEASE=5.8
_INIT_UTS_SYSNAME=SunOS
_INIT_UTS_VERSION=Generic_117350-30 测试变量是否已经设置 如果没有设置,则使用默认值,但默认值不会传递给该变量,如下所示
$ echo ${name:-xie}
xie
$ echo $name $ name=wen
$ echo $name
wen
$ echo ${name:-xie}
wen
使用该值并传递给该变量
$ echo $stu $ echo ${stu:=blue}
blue
$ echo $stu
blue 测试变量是否设置,如果未设置,则返回一空串
$ echo $good $ echo ${good:+old} $ echo ${stu:+red}
red
$ echo $stu
blue 设置只读变量 varible_name=value
readonly varible_name
2、环境变量
环境变量用于所有用户进程,称为子进程,登陆进程称为父进程
环境变量可以在命令行中设置,但用户注销后在命令行设置的环境变量值将丢失。所以最好在.profile文件中配置,每次登陆时这些环境变量将进行初始化。 设置环境变量 sh设置
VARIBLE_NAME=value
export VARIBLE_NAME csh设置
setenv VARIBLE_NAME value
显示环境变量
$VARIBLE_NAME 显示所有环境变量
env HOME=/export/home/xxxuser
PATH=/bin:/usr/bin:/opt/informix:/opt/informix/bin:/opt/informix/etc:.
LOGNAME=xxxuser
HZ=100
TERM=vt100
TZ=PRC
SHELL=/bin/csh
MAIL=/var/mail/xxxuser
_INIT_NET_STRATEGY=none
_INIT_PREV_LEVEL=S
_INIT_RUN_LEVEL=3
_INIT_RUN_NPREV=0
_INIT_UTS_ISA=sparc
_INIT_UTS_MACHINE=sun4u
_INIT_UTS_NODENAME=xxxdb
_INIT_UTS_PLATFORM=SUNW,Sun-Fire-V890
_INIT_UTS_RELEASE=5.8
_INIT_UTS_SYSNAME=SunOS
_INIT_UTS_VERSION=Generic_117350-30
PWD=/export/home/xxxuser/xie/test
USER=xxxuser
INFORMIXSERVER=resserver
INFORMIXDIR=/opt/informix
ONCONFIG=onconfig
LANG=C
EDITOR=vi
清除环境变量
unset VARIBLE_NAME 嵌入shell变量 预留的环境变量名
CDPATH改变路径变量
EXINIT变量保存使用vi编辑器时的初始化选项
HOME家目录,passwd文件倒数第二列的目录
IFS域分割符
LOGNAME登陆名
MAIL邮箱路径名
MAILCHECK检查新邮件
MAILPATH多个邮箱时设置,将覆盖MAIL变量
PATH命令或脚本执行时查找路径
PS1提示符,缺省为$
PS2附属提示符,缺省为>
SHELL缺省shell
TERMINFO终端配置文件的位置
TERM终端类型
TZ时区 其他环境变量
EDITOR编辑器
PWD当前路径
PAGER保存屏幕翻页命令
MANPATH保存man文件的路径
PRINTER缺省打印机名 3、位置变量 位置变量是只读变量
$0--$9
$0表示脚本名字
4、特定变量 $#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数
$$脚本运行的当前进程ID
$!后台运行的最后一个进程的进程ID
$@同$#,使用时加引号
$-显示shell使用的当前选项
$?显示最后命令的退出状态,0表示没有错误
相关阅读 更多 +