环境变量

环境变量(environment variables)一般是指在 操作系统中用来指定操作系统运行环境的一些参数,如: 临时文件夹位置和 系统文件夹位置等。

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

主要作用

设置参数

环境 变量相当于给系统或用户 应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关。比如path,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在 当前目录下面寻找此程序外,还应到哪些目录下去寻找;再如tc或vc++中,set include=path1;path2; 是告诉 编译程序到哪里去找.h类型的文件;当然不仅仅是指定什么路径,还有其它的作用的,如set dircmd=/4 设置一个环境变量的作用是在使用dir 命令时会把/4作为缺省的参数添加到你的dir命令之后,就像你的每个命令都加了/4参数,它实际上是给命令 解释程序command设置的一个环境变量,并且是给dir这个 内部命令设置的。
DWORD  GetEnvironmentVariable(LPCSTR lpName, LPSTR lpBuffer, DWORD dSize),参数lpName是你要求查询的环境 变量的名,lpBuffer是返回你所指定的环境变量的值的,dSize是告诉这个 函数lpBuffer可以存放多少个字节。
分析本地故障时原因很可能就是因为环境 变量中的默认路径被删除的结果,默认路径一经设置,当前系统如有 程序运行时需要某些DLL或EXE文件,以及Active控件时就会到所有默认路径中去查找,如果在这些 目录中查找到相应的程序则自动加载,查找不到则报告缺少某某文件的 错误信息。

软件共用

很多朋友会在自己的 计算机上安装双系统,例如C盘安装Windows XP,D盘安装Windows 7。可是某些 软件往往只在Windows XP系统中安装,Windows 7系统中是无法正常使用的,比较麻烦却有效的方法是再安装一遍。当我们了解了环境 变量中的用途后就可以很好解决双系统的 软件共用问题。

系统运行

为什么在Windows XP中安装了的 软件在Windows 7下无法运行呢( 绿色软件除外)?原因是安装软件时往往须要向系统 目录中复制某些文件,而使用另外一个系统时会由于缺少这些文件而无法运行。因此,我们可以通过设置环境 变量的方法来解决这个问题。

常见环境变量

WINDOWS系统

%ALLUSERSPROFILE% 局部 返回所有“ 用户配置文件”的位置。
%APPDATA% 局部 返回默认 情况下 应用程序存储数据的位置。
%CD% 局部 返回 当前目录字符串。
%CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确 命令行。
%CMDEXTVERSION% 系统 返回当前的“ 命令处理 程序扩展”的版本号。
%COMPUTERNAME% 系统 返回 计算机的名称。
%COMSPEC% 系统 返回 命令行解释器可执行 程序的准确路径。
%DATE% 系统 返回当前 日期。使用与 date /t  命令相同的格式。由 Cmd.exe 生成。有关 date  命令的详细信息,请参阅 Date。
%ERRORLEVEL% 系统 返回使用过的 命令的 错误代码。通常用非零值表示错误。
%HOMEDRIVE% 系统 返回连接到用户主 目录的本地工作站驱动器号。基于主 目录值的设置。用户主 目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统 返回用户主 目录的完整路径。基于主 目录值的设置。用户主 目录是在“ 本地用户和组”中指定的。
%HOMESHARE% 系统 返回用户的共享主 目录的网络路径。基于主 目录值的设置。用户主 目录是在“本地用户和组”中指定的。
%LOGONSEVER% 局部 返回验证当前登录会话的 域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统 指定安装在 计算机上的处理器的数目。
%OS% 系统 返回 操作系统的名称。Windows 2000 将 操作系统显示为 Windows_NT。
%PATH% 系统 指定 可执行文件的搜索路径。
%PATHEXT% 系统 返回 操作系统认为可执行的 文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值: x86,IA64。
%PROCESSOR_IDENTIFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL% 系统 返回 计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器修订号的 系统变量。
%PROMPT% 局部 返回当前 解释程序的 命令提示符设置。由 Cmd.exe 生成。
%RANDOM% 系统 返回 0 到 32767 之间的任意 十进制数字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系统 返回包含 Windows XP 根 目录(即系统根目录)的 驱动器。
%SYSTEMROOT% 系统 返回 Windows XP 根 目录的位置。
%TEMP% and %TMP% 系统和用户 返回对当前登录用户可用的 应用程序所使用的默认临时 目录。有些 应用程序需要 TEMP,而其它应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time  命令的详细信息,请参阅 Time。
%USERDOMAIN% 局部 返回包含 用户帐户的域的名称。
%USERNAME% 局部 返回当前登录的用户的名称。
%UserProfile% 局部 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回 操作系统 目录的位置。

Linux系统

shell环境依赖于多个文件的设置。当shell被调用时,它从两个初始文件读取 命令。/etc/profile包含了 系统变量,它由 系统管理员维护,由系统管理员设置本地系统变量和特殊 命令。普通用户的启动 信息文件($HOME/.bash_project)由各用户自己维护,该文件可以被修改以实现任何特定的 系统初始化。
只有在特定的 情况下才读取profile文件,确切的说是在用户登陆的时候。当运行shell脚本或subshell以后,就无须再读profile.虽然所有profile都可选的,但是基本上所有系统都有/etc/profile.
如果定义了 变量ENV且已经传递到环境中,则所有的bash shell都要读取并调用由这个变量制定的文件所包含的 命令。这个文件用来定义所有bash shell的特征,而不仅仅是登陆到shell。这个文件的典型的名字是$HOME/,bashrc。
当用( 系统管理员)新建用户时,.bash_profile、bashrc和其他公共的环境文件模板将复制到/etc/skel这个 目录下面。可以编辑这些初始化设置,也可以在此 目录下添加附加的文件。
Example:
一个典型的系统profile(/etc/profile):
PATH=$PATH:/usr/qa/tools/bin
ENV==$HOME/.bashrc
ORACLE_HOME=/ dbs/oracle
ORACLE_SID=qadb
Export PATH ENV ORACLE_HOME ORCAL_SID
Cat /etc/motd
一个典型的用户profile(.bashrc)
PATH=$PATH:$HOME/bin
TEAM=uvt1224 export TERM
stty intr \^C
cal
mesg n
一个典型的用户 bashrc file (.bashrc):
alias dir=ls lf='ls -FC'
PSI='$PWS[!]>'
set -o vi
别名和其他bash专用的定义应该放在.bashrc文件(不应在.bash_profile) 中定义;否则会导致找不到某些 命令。
应该记住profile文件和.bashrc文件的区别:两个profile都只在系统启动时被读取一次,而.bashrc在系统启动和每次调用shell的时候都要被读取。

设置方法

在windows 操作系统中可以通过 我的电脑-〉系统属性-〉高级系统设置->环境变量,来设置系统的环境 变量,然而在此设置的环境变量是否在注册表中具有对应的项呢?答案是肯定的。而在.net 中提供了一个类来获取系统的环境 变量及其值。
环境 变量分为两类:用户变量与 系统变量,在注册表中都有对应的项。
其中用户 变量所在位置:
HKEY_CURRENT_USER\Environment;
系统变量所在位置为:\ HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001
\Control\Session Manager\Environment。
另外也可以右击 我的电脑——高级系统设置——环境 变量——在 系统变量里有path选项——双击打开——在原有变量的基础上添加英文状态下的分号——然后将路径名输入即可。(切记,不要删除原先的 系统变量,只要用分号隔开,然后添加,最后也要加上分号)

编辑方法

在命令行中对环境变量进行编辑的方法
查看当前可用的所有环境 变量(= 系统变量+用户变量)
set
查看某个环境 变量,如PATH
set PATH
添加环境 变量,如xxx=aa
set xxx=aa
将环境 变量(如xxx)的值置为空
set xxx=
在某个环境 变量(如PATH)后添加新的值(如d:\xxx)
set PATH=%PATH%;d:\xxx
(注:在dos窗口中以 命令行方式对环境 变量的操作只对当前窗口的应用有效)

MAC下:

Mac 启动加载文件位置(可设置环境变量)

-------------------------------------------------------

 (1)首先要知道你使用的Mac OS X是什么样的Shell,使用命令

echo $SHELL

如果输出的是:csh或者是tcsh,那么你用的就是C Shell。

如果输出的是:bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种。

Mac OS X 10.2之前默认的是C Shell。

Mac OS X 10.3之后默认的是Bourne Shell。

 

(2)如果是Bourne Shell。

那么你可以把你要添加的环境变量添加到你主目录下面的.profile或者.bash_profile,如果存在没有关系添加进去即可,如果没有生成一个。

 

Mac配置环境变量的地方

 1./etc/profile   (建议不修改这个文件 )

 全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

 

 2./etc/bashrc    (一般在这个文件中添加系统级环境变量)

 全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。

 

 3.~/.bash_profile  (一般在这个文件中添加用户级环境变量)

 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!

 

 

MAC 修改host文件 

-------------------------------------------------------

sudo vi /etc/hosts

 

 

linux下查看和添加PATH环境变量

==============================================

 

PATH的格式为:

-------------------------------------------------------

PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>   ,中间用冒号隔开。

 

 

 

添加PATH环境变量:

-------------------------------------------------------

[root@localhost u-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH

 

 

查看PATH环境变量:

-------------------------------------------------------

[root@localhost u-boot-sh4]#echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

 

 操作示例:

-------------------------------------------------------

通过编辑 启动文件 来改PATH,

# vim /etc/profile

在文档最后,添加:

export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"

保存,退出。

 

立即生效请运行:

#source /etc/profile

不报错则成功。

 

如果想立刻生效,则可执行下面的语句:

$ source .bash_profile(这是文件名)

环境变量更改后,在用户下次登陆时生效。


mac 一般使用bash作为默认shell

Mac系统的环境变量,加载顺序为:
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc
当然/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量。后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。~/.bashrc没有上述规则,它是bash shell打开的时候载入的。

如果没特殊说明,设置PATH的语法都为:
——————————————————-

1
2
#中间用冒号隔开
      export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

(一)全局设置
下面的几个文件设置是全局的,修改时需要root权限

1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就可以了。

2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

3)/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。

4)
1.创建一个文件:
sudo touch /etc/paths.d/mysql
2.用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑):
sudo vim /etc/paths.d/mysql
3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了)
/usr/local/mysql/bin
据说,这样可以自己生成新的文件,不用把变量全都放到 paths 一个文件里,方便管理。

(二)单个用户设置

1)~/.bash_profile (任意一个文件中添加用户级环境变量)
(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)
若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
设置命令别名alias ll=’ls -la’
设置环境变量:

1
export PATH=/opt/local/bin:/opt/local/sbin:$PATH

2)~/.bashrc 同上

如果想立刻生效,则可执行下面的语句:
$ source 相应的文件
一般环境变量更改后,重启后生效。


LINUX下:

添加PATH环境变量,第1种方法:
[root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH

再次查看:

[root@lx_web_s1 ~]# echo $PATH         
/usr/local/webserver/mysql/bin:/usr/local/webserver/mysql/bin/:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

说明添加PATH成功。

上述方法的PATH 在终端关闭 后就会消失。所以还是建议通过编辑/etc/profile来改PATH,也可以修改家目录下的.bashrc(即:~/.bashrc)。
 
第2种方法: 
# vim /etc/profile
在最后,添加:
export PATH="/usr/local/webserver/mysql/bin:$PATH"
保存,退出,然后运行:
#source /etc/profile
不报错则成功。

如果你想查看某一个名称的环境变量,命令是:echo $环境变量名,比如:

echo $ORACLE_HOME

这是最基础的,下面来讲下稍微深入一点的,并举例说明

1.显示环境变量HOME
$echo $HOME
/home/ljj

2.设置一个新的变量
export  HELLO=”Hello!”

$ echo $HELLO

Hello!

3. 使用env命令显示所有的环境变量

env

ORBIT_SOCKETDIR=/tmp/orbit-ljj
SSH_AGENT_PID=1525
TERM=xterm
SHELL=/bin/bash
XDG_SESSION_COOKIE=5e42e49d41b7b05ff090ea4a4ce0a37d-1294464361.122772-796576665
WINDOWID=58845346
OLDPWD=/usr/src/linux-source-2.6.32
GNOME_KEYRING_CONTROL=/tmp/keyring-VncVzp
GTK_MODULES=canberra-gtk-module
USER=ljj
...

4.使用unset命令来清除环境变量
set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:

$ export TEST=”Test…” #增加一个环境变量TEST

$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了

TEST=Test…

$ unset $TEST #删除环境变量TEST

$ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了

5. 使用readonly命令设置只读变量

如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:

$ export TEST=”Test…” #增加一个环境变量TEST

$ readonly TEST #将环境变量TEST设为只读

$ unset TEST #会发现此变量不能被删除

-bash: unset: TEST: cannot unset: readonly variable

$ TEST=”New” #会发现此也变量不能被修改

-bash: TEST: readonly variable

环境变量的设置位于/etc/profile文件

如果需要增加新的环境变量可以添加下属行

export path=$path:/path1:/path2:/pahtN



你可能感兴趣的:(环境变量)