全部環境變量名都是大寫
小寫,系統會看成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