全局环境变量:在sehll会话和该shell创建的子shell进程中都可见。使用export导出全局环境变量后,当前shell和它的所有子shell都可以访问变量。
局部环境变量:只在创建他们的shell中可见。子shell看不到父shell创建的环境变量。
要注意定义环境变量名字、等号、值之间不能有空格。
查看全局环境变量
[admin@v035114 ~]$ printenv HOSTNAME=v035114.sqa.cm4 TERM=linux SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=10.13.44.34 57803 22 SSH_TTY=/dev/pts/2 STORM_HOME=/home/admin/qihao/storm-0.7.1 USER=admin LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35: MAIL=/var/spool/mail/admin PATH=/opt/taobao/java64/bin:/home/admin/qihao/storm-0.7.1/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/admin/bin:/usr/sbin INPUTRC=/etc/inputrc PWD=/home/admin JAVA_HOME=/opt/taobao/java64 LANG=en_US.ISO_8859-1 HISTCONTROL=ignoredups SHLVL=1 HOME=/home/admin LOGNAME=admin CVS_RSH=ssh SSH_CONNECTION=10.13.44.34 57803 10.232.35.114 22 LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/usr/bin/printenv
可以使用set命令查看环境变量,既包含全局的,也包含局部的环境变量。
使用unset命令删除环境变量
[admin@v035114 ~]$ nihao=nihaoma [admin@v035114 ~]$ export nihao [admin@v035114 ~]$ echo $nihao nihaoma [admin@v035114 ~]$ unset nihao [admin@v035114 ~]$ echo $nihao [admin@v035114 ~]$
在子shell中删除全局定义的环境变量,那么只在当前shell中失效,在父shell中该环境变量依然有效
[admin@v035114 ~]$ test=nihao [admin@v035114 ~]$ export test [admin@v035114 ~]$ echo $test nihao [admin@v035114 ~]$ bash [admin@v035114 ~]$ echo $test nihao [admin@v035114 ~]$ unset test [admin@v035114 ~]$ exit exit [admin@v035114 ~]$ echo $test nihao [admin@v035114 ~]$
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行并从/etc/profile.d目录的配置文件中搜集shell的设置.
[admin@v035114 ~]$ cat /etc/profile # /etc/profile # System wide environment and startup programs, for login setup # Functions and aliases go in /etc/bashrc pathmunge () { if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then if [ "$2" = "after" ] ; then PATH=$PATH:$1 else PATH=$1:$PATH fi fi } # ksh workaround if [ -z "$EUID" -a -x /usr/bin/id ]; then EUID=`id -u` UID=`id -ru` fi # Path manipulation if [ "$EUID" = "0" ]; then pathmunge /sbin pathmunge /usr/sbin pathmunge /usr/local/sbin fi # No core files by default ulimit -S -c 0 > /dev/null 2>&1 if [ -x /usr/bin/id ]; then USER="`id -un`" LOGNAME=$USER MAIL="/var/spool/mail/$USER" fi HOSTNAME=`/bin/hostname` HISTSIZE=1000 if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then INPUTRC=/etc/inputrc fi export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then if [ "$PS1" ]; then . $i else . $i >/dev/null 2>&1 fi fi done unset i unset pathmungeo
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.(1)执行~/bashrc (2) export用户自定义全局变量
[admin@v035114 ~]$ cat .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs export JAVA_HOME=/opt/taobao/java64 export STORM_HOME=/home/admin/qihao/storm-0.7.1 export PATH=$JAVA_HOME/bin:$STORM_HOME/bin:$PATH:$HOME/bin:/usr/sbin export HISTCONTROL=ignoredups
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs export JAVA_HOME=/opt/taobao/java64 export STORM_HOME=/home/admin/qihao/storm-0.7.1 export PATH=$JAVA_HOME/bin:$STORM_HOME/bin:$PATH:$HOME/bin:/usr/sbin
命令别名 : 为公共命令(以及他们的参数)创建别名,减少打字~ 例如常见的ll命令~
[admin@v035114 ~]$ alias alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'