前端之家收集整理的这篇文章主要介绍了
UNIX下的环境变量--转载,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所有环境变量名都是大写小写,系统会当作shell script自定义变量,而不会当作环境变量
</tr>
<tr>
<td>[root@mac-home macg]# echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/macg/bin</td>
</tr>
export不跟参数——
显示所有环境变量# exportdeclare -x G_BROKEN_FILENAMES="1"declare -x HISTSIZE="1000"declare -x HOME="/root"declare -x HOSTNAME="mac-home"declare -x LANG="en_US.UTF-8"declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"declare -x LOGIN="macg"declare -x LOGNAME="macg"declare -x declare -x MAIL="/var/spool/mail/macg"declare -x OLDPWD="/etc/init.d"declare -x PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/macg/bin"declare -x PWD="/home/macg"declare -x SHELL="/bin/bash"declare -x SHLVL="2"declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"declare -x TERM="vt100"declare -x USER="macg"
显示全部环境变量,也可以用set$ setBASH=/bin/bashCOLORS=/etc/DIR_COLORSCOLUMNS=132HOME=/home/macHOSTNAME=machomeHOSTTYPE=i386IFS=$' \t\n'INPUTRC=/etc/inputrcLANG=en_US.UTF-8LESSOPEN='|/usr/bin/lesspipe.sh %s'LINES=49LOGNAME=macPS4='+ 'PWD=/home/macREMOTEHOST=192.168.1.100SHELL=/bin/bashSHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitorSHLVL=1SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpassSUPPORTED=en_US.UTF-8:en_US:enTERM=vt100 UID=500USER=mac _=expect
显示单个环境变量用echo … [root@mac-home macg]# echo $PATH 当前环境PATH(优先
搜索,缺省
搜索)/usr/kerberos/sbin:/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/macg/bin 由一系列冒号分隔的路径组成[root@mac-home macg]# echo $HOME 当前
用户主目录/root [root@mac-home macg]# echo $USER 当前
用户名macg [root@mac-home macg]# echo $PWD 当前目录/home/macg [root@mac-home macg]# echo $SHELL 当前
用户shell/bin/bash [mac@machome ~]$ echo $TERM 当前终端形式,Linux 终端大多数用'vt100'或'linux'作为vt100 终端类型。千万别用export …那是重置变量 环境变量操作
赋值 export
必须到/etc/profile里定义和export 赋值 export 最简单的PATH环境变量的修改[mac@test1 ~]# echo $PATH/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/mac/bin[mac@test1 ~]# PATH=$PATH:/sbin[mac@test1 ~]# echo $PATH/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/mac/bin:/sbin[mac@test1 ~]# export PATH 设置一个变量,直接用名称,而不需要加'$':PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin export 环境变量,不能带$
</tr></table>
export命令
</tr>
<tr>
<td>export PATH=$PATH:/some/directory 同时修改和export变量</td>
</tr>
<tr>
<td>export TERM PATH SHELL HOME 一次将4大环境变量放入环境中</td>
</tr>
由于export变量的父子传递特性,如果想一直保持一个在unix环境变量,必须到/etc/profile 或/etc/bashrc 或~/.bashrc ~/.profile再其他地方定义和export都不会成功 Source 命令——修改/etc/profile立刻生效vi /etc/profile source /etc/profile 这样,刚刚写进去的环境变量就生效了其实退出shell再登进去,应该/etc/profile就生效 环境变量改变以后,退出后重新su入,环境没改变,为什么?
修改/etc/profile,加下面环境变量:JAVA_HOME="/usr/java"export JAVA_HOME重新退出,重新登入,[mac@demo1 ~]$ suPassword:[root@demo1 mac]# exportdeclare -x HOSTNAME="demo1.ntrackertest.com"declare -x PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/mac/bin"没找到新加的变量JAVA_HOME</tr>
<tr>
<td> 解决问题:比如用su -,才能调入新的环境变量[mac@demo1 ~]$ su -Password:[root@demo1 ~]# exportdeclare -x HOSTNAME="demo1.ntrackertest.com"declare -x JAVA_HOME="/usr/java"PATH="/usr/java/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:."
</td>
</tr>
为什么root执行好多命令都说command not found你一定是telnet上来,然后su成root的吧,改改你的su命令格式,应该是su - 不能用PATH=/some/directory,因为这将删除 $PATH 中其他的所有目录,必须作添加,PATH=$PATH:/some/directory 请不要在'.bashrc'中设置 PATH ,否则会导致 PATH 中目录的意外增长。因为每次打开一个新的 shell新的终端 ,'.bashrc'都会作用。 env VAR=value commmand 只想在执行某条指令时临时改变系统shell变量,又不想真正改变系统设置
</tr>
<tr>
<td> # env LANG=C /usr/local/mrtg-2/bin/mrtg /home/macg/www/mrtg/cfg/mrtg.cfg2007-02-15 18:47:44,Rateup WARNING:</td>
</tr>
提示符 的经验
</td>
<td valign="top" width="312">
首先系统提示符是系统变量
</td>
</tr>
<tr>
<td valign="top" width="307">
</td>
<td valign="top" width="312">
改变提示符: 为当前目录
</td>
</tr>
<tr>
<td valign="top" width="307">
</td>
<td valign="top" width="312">
变量赋值,不需要带
提示符错误,成了字符串了
</td>
</tr>
<tr>
<td valign="top" width="307">
</td>
<td valign="top" width="312">
仍是字符串,因为不能扩展
只不过多了
</td>
</tr>
<tr>
<td valign="top" width="307">
</td>
<td valign="top" width="312">
必须在双引号下,命令才能扩展
取里面命令的输出
但命令只执行一次,不随着当前目录改变而更改
</td>
</tr>
<tr>
<td valign="top" width="307">
</td>
<td valign="top" width="312">
必须用系统变量
才能使提示符随着目录 而更改
</td>
</tr>
<tr>
<td valign="top" width="307">
>"
</td>
<td valign="top" width="312">
发现还缺一个提示符
必须加一个
</td>
</tr>
Redhat下改提示符为"[\\u@\\h]:\$PWD>\$"$PS1="[\\u@\\h]:\$PWD>\$"[macg@machome]:/export/home/macg>$
原文地址:http://blog.sina.com.cn/s/blog_6151984a0100ej4v.html