UNIX下的環境變量--轉載

 全部環境變量名都是大寫
小寫,系統會看成shell script自定義變量,而不會看成環境變量html

[root@mac-home macg]# echo $path
                                                                        
[root@mac-home macg]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/macg/bin



    export不跟參數——顯示全部環境變量
# export
declare -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
$ set
BASH=/bin/bash
COLORS=/etc/DIR_COLORS
COLUMNS=132
HOME=/home/mac
HOSTNAME=machome
HOSTTYPE=i386
IFS=$' \t\n'
INPUTRC=/etc/inputrc
LANG=en_US.UTF-8
LESSOPEN='|/usr/bin/lesspipe.sh %s'
LINES=49
LOGNAME=mac
PS4='+ '
PWD=/home/mac
REMOTEHOST=192.168.1.100
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SUPPORTED=en_US.UTF-8:en_US:en
TERM=vt100              
UID=500
USER=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 …那是重置變量


    環境變量操做java

  •     現有系統環境變量修改

    賦值
    exportlinux

  •     新建環境變量

    必須到/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 環境變量,不能帶$shell

[mac@test1 ~]$ export $PATH
-bash: export: `/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/mac/bin:/sbin':not a valid identifier
[mac@test1 ~]$ export PATH




    export命令bash

PATH=$PATH:/some/directory
export PATH   
export PATH=$PATH:/some/directory    同時修改和export變量
export TERM PATH SHELL HOME    一次將4大環境變量放入環境中



    因爲export變量的父子傳遞特性,若是想一直保持一個在unix環境變量,必須到/etc/profile 或/etc/bashrc 或~/.bashrc ~/.profile
再其餘地方定義和export都不會成功


   Source 命令——修改/etc/profile馬上生效
vi /etc/profile   
source /etc/profile    這樣,剛剛寫進去的環境變量就生效了
其實退出shell再登進去,應該/etc/profile就生效



   環境變量改變之後,退出後從新su入,環境沒改變,爲何?less

修改/etc/profile,加下面環境變量:
JAVA_HOME="/usr/java"
export JAVA_HOME

從新退出,從新登入,
[mac@demo1 ~]$ su
Password:
[root@demo1 mac]# export
declare -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
 解決問題:好比用su - ,才能調入新的環境變量

[mac@demo1 ~]$ su -
Password:
[root@demo1 ~]# export
declare -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:."



爲何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變量,又不想真正改變系統設置ssh

 # /usr/local/mrtg-2/bin/mrtg /home/macg/www/mrtg/cfg/mrtg.cfg
-----------------------------------------------------------------------
ERROR: Mrtg will most likely not work properly when the environment
       variable LANG is set to UTF-8. Please run mrtg in an environment
       where this is not the case. Try the following command to start:

       env LANG=C /usr/local/mrtg-2/bin/mrtg /home/macg/www/mrtg/cfg/mrtg.cfg
-----------------------------------------------------------------------
 # env LANG=C /usr/local/mrtg-2/bin/mrtg /home/macg/www/mrtg/cfg/mrtg.cfg
2007-02-15 18:47:44, Rateup WARNING:

 

       更改提示符 的經驗

 

首先系統提示符是系統變量$PS1ide

 

改變unix提示符: 爲當前目錄pwdthis

# PS1='pwd'spa

pwd     

shell變量賦值,不須要帶$

提示符錯誤,成了字符串了

pwdPS1='pwd#'

pwd#   

還是字符串,由於’ ‘不能擴展

只不過多了#

pwd#PS1="$(pwd)#"

/home#       

 

/home#cd /etc

/home#       

必須在雙引號下,命令才能擴展        

$()裏面命令的輸出

 

pwd命令只執行一次不隨着當前目錄改變而更改

#PS1=$PWD

/export/home/macg

 

必須用系統變量$PWD

才能使提示符隨着目錄changed 而更改

/export/home/macg ls –l

 

/export/home/macgPS1="$PWD >"

/export/home/macg >

發現還缺一個提示符

 

必須加一個>


    Redhat下改提示符爲"[\\u@\\h]:\$PWD>\$"
$PS1="[\\u@\\h]:\$PWD>\$"
[macg@machome]:/export/home/macg>$  

 

原文地址:http://blog.sina.com.cn/s/blog_6151984a0100ej4v.html

相關文章
相關標籤/搜索