UNIX下的环境变量--转载
?所有環境變量名都是大寫
小寫,系統會當作shell script自定義變量,而不會當作環境變量
| [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 …那是重置變量
????環境變量操作
- ????現有系統環境變量修改
????賦值
????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 環境變量,不能帶$
| [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命令
| 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入,環境沒改變,為什么?
| 修改/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變量,又不想真正改變系統設置
| ?# /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: |
?
???????更改提示符?的經驗
| ? | 首先系統提示符是系統變量$PS1 |
| ? | 改變unix提示符:?為當前目錄pwd |
| # PS1='pwd' 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
轉載于:https://www.cnblogs.com/davidwang456/p/4272583.html
總結
以上是生活随笔為你收集整理的UNIX下的环境变量--转载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: quartz 报错:java.lang
- 下一篇: 当前工程读取配置文件示例