全部环境变量名都是大写
小写,系统会看成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