UNIX下的环境变量--转载

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Shell相关文章