1.环境变量的定义:
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,如PATH,PWD,USER,当前使用的shell名称。系统启动后,会产生许多环境变量,用户可以用set命令查看:
Shell实例1:
[root@ChangerLee 环境变量的定义]# set
ABRT_DEBUG_LOG=/dev/null
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_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_REMATCH=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='4.2.46(1)-release'
COLUMNS=96
......
2.常见的环境变量:
PATH:系统路径
HOME:当前用户家目录路径
HISTSIZE:保存历史记录的条数
LOGNAME:当前登陆用户名称
HOSTNAME:主机名称,如果应用程序往往从这个环境变量查取主机名称
SHELL:当前用户使用的是交互程序shell
PS1:主提示符,通常使用了一个字符串表达式
LANG/LANGUAGE:和语言相关的环境变量
shell实例2:
[root@ChangerLee 环境变量的定义]# cat envin.sh
#!/bin/bash
#常用环境变量实例
echo "系统路径'PATH':${PATH}"
echo "当前用户家目录'HOME':${HOME}"
echo "保存历史记录的条数'HISTSIZE':$HISTSIZE"
echo "当前登陆用户名'LOGNAME':$LOGNAME"
echo "主机名'HOSTNAME':$HOSTNAME"
echo "当前用户使用的交互shell'SHELL':$SHELL"
echo "当前用户使用的语言'LANG':$LANG"
echo "当前用户使用的邮件存放目录路'MAIL':$MAIL"
[root@ChangerLee 环境变量的定义]# sh envin.sh
系统路径'PATH':/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
当前用户家目录'HOME':/root
保存历史记录的条数'HISTSIZE':1000
当前登陆用户名'LOGNAME':root
主机名'HOSTNAME':ChangerLee
当前用户使用的交互shell'SHELL':/bin/bash
当前用户使用的语言'LANG':en_US.UTF-8
当前用户使用的邮件存放目录路'MAIL':/var/spool/mail/root
shell实例3:
[root@ChangerLee 环境变量的定义]# echo $PS1
[\u@\h \W]\$
以上命令输出了当前用户的主提示符表达式,用户可以通过修改变量PS1的方式来自定义主提示符表达式,表达式含义如下:
\u:当前使用系统的用户
\h:当前计算机名称
\w:当前工作路径
\d:当前系统的日期
\$:提示符
\H:完整的计算机名称
\t:24小时制的时间格式
\v:当前Bash版本
Shell实例4:
[root@ChangerLee 环境变量的定义]# PS1='\d \H \t \v \$'
Sun Jul 31 ChangerLee 22:40:14 4.2 #
Sun Jul 31 ChangerLee 22:41:20 4.2 #PS1='[\u@\h \W]\$'
[root@ChangerLee 环境变量的定义]#
Shell实例5:
[root@ChangerLee 环境变量的定义]#echo $PS2
>
以上为辅助提示符变量,一般用于强制换行,修改如下
[root@ChangerLee 环境变量的定义]#PS2='#'
[root@ChangerLee 环境变量的定义]#\
#
[root@ChangerLee 环境变量的定义]#PS2='>'
[root@ChangerLee 环境变量的定义]#\
>
以上修改都是临时修改,要想永久修改须通过修改配置文件的方法:
/etc/profile:全局用户配置文件。修改此文件,生效全系统用户
~/.bash_profile:用户个人配置文件。修改此文件,生效当前用户
/etc/bashrc:全局环境变量配置文件。此文件定义了所有用户的配置文件
~/.bashrc:个人环境变量配置文件。此文件定义了用户的环境变量
修改该后只需重新登陆文字终端即可生效
3.只读环境变量:
只读环境变量都是一些非常重要的环境变量,其值是无法修改
查看如下:
Shell实例6:
[root@ChangerLee 环境变量的定义]#readonly
declare -r BASHOPTS="checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -r BASH_COMPLETION_COMPAT_DIR="/etc/bash_completion.d"
declare -ar BASH_REMATCH='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -ir EUID="0"
declare -ir PPID="6312"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="0"