所有环境变量名都是大写
小写,系统会当作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

UNIX下的环境变量--转载的更多相关文章

  1. Linux下配置环境变量—— .bashrc 和 /etc/profile

    转载:https://blog.csdn.net/sun8112133/article/details/79901527 首先简单说一下什么是环境变量?环境变量简单的说就是当前环境下的参数或者变量.如 ...

  2. 环境变量解释以及在Linux下的环境变量设置

    一.环境变量解释 环境变量是什么? 引用百度百科里面的解释:环境变量是操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如Windows系统中的path环境变量,当要求 ...

  3. 在mac下设置环境变量

    在mac下设置环境变量   在基于unix/linux的操作系统下进行程序开发,使用环境变量将会方便.通过设置环境变量将可以在任意目录通过输入程序名来执行设定目录下的程序.不需要通过cd将工作目录改变 ...

  4. Windows 下java环境变量的配置(Windows7 ,8,8.1,10)

    Windows 下java环境变量的配置 在“系统”面板的左上角选择“高级系统设置”,在弹出的系统属性中选择”高级“项,然后点击右下角的“环境变量(N)...”,就此进入JAVA环境变量的配置. 如果 ...

  5. Mac下修改环境变量

    Mac下修改环境变量 如果使用默认Bash, 首先修改 ~/.bash_profile 文件,添加文件路径,比如: export PATH=~/bin:/usr/local/bin/node:~/Do ...

  6. Linux系统下修改环境变量PATH路径的三种方法

    这里介绍Linux的知识,比如把/etc/apache/bin目录添加到PATH中有三种方法,看完之后你将学会Linux系统下如何修改环境变量PATH路径,需要的朋友可以参考下 电脑中必不可少的就是操 ...

  7. 【转】win7(windows7)下java环境变量配置方法

    原文网址:http://jingyan.baidu.com/article/925f8cb836b26ac0dde0569e.html win7(windows7)下java环境变量配置方法,java ...

  8. 在Windows下设置环境变量 运行mysql程序变得更容易

    在Windows下设置环境变量,点开始菜单,右键单击我的电脑--属性--高级--环境变量 可以看到PATH的变量是这样的: C:\WINDOWS;C:\WINDOWS\COMMAND   为了让运行m ...

  9. Linux和Windows下查看环境变量方法对比

    摘自:Linux和Windows下查看环境变量方法对比 一.查看所有环境变量的名称和值 Linux下:export Windows下:set 二.根据名称查该环境变量的值 Linux下:echo $环 ...

随机推荐

  1. Android 如何在ScrollView中嵌套ListView

    前几天因为项目的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView.但刚开始的时候,会发现放入的小ListVie ...

  2. FORM - 实现某数据项自动按记录序号加一操作

    ---- 设块名为VO,要操作的数据项为VO_ID,在该块中建立块级触发子WHEN-CREATE- RECORD,每当生成新记录时VO_ID就会自动加一了,加入如下代码: :VO_ID:=:Syste ...

  3. hdu2852KiKi's K-Number(区间K值)

    http://acm.hdu.edu.cn/showproblem.php?pid=2852 区间K值写错了... #include <iostream> #include<cstd ...

  4. 归纳决策树ID3(Java实现)

    先上问题吧,我们统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play).如果给出新一天的气象指标数据:sunny,c ...

  5. Ubuntu 出现apt-get: Package has no installation candidate问题

    今天在安装软件的时候出现了Package has no installation candidate的问题,如: #  apt-get install <packagename> Read ...

  6. BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1607 给出一组n个数,求每个数能被多少个其他的数整除. 分析 暴力一点的做法就是每个数去筛它的 ...

  7. android WebViewClient的方法解释

    1.在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边. public boolean shouldOverrideUrlLo ...

  8. java命名规范和编程技巧

    一个好的java程序首先命名要规范. 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,方便维护等作用 Package 的命名 Package 的名字应该都是由一个小写 ...

  9. Ruby require 路径问题

    require 负责引用一个外部文件,可以省略".rb"字样. 如: require 'foo.bar' 等价于 require 'foo' 在Ruby中,同一目录下的文件, 如 ...

  10. Windows下使用GCC编译器

    1.GCC编译器的选择 Windows下最常见的安装GCC的方式有两种:Cygwin和MinGW.本文主要介绍MinGW的安装配置. 2.下载MinGW 下载地址:http://sourceforge ...