精华内容
下载资源
问答
  • windows 环境变量

    千次阅读 2013-04-09 16:25:22
    Visual Studio 2008 和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些...

     Visual Studio 2008  和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。

    可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 

    关于如何自己定义环境变量详见我的另一文章http://blog.csdn.net/jtop0/article/details/7574139

     

    说明

    $(RemoteMachine)

    在“调试”属性页上设置为 Remote Machine 属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置

    $(Configuration)

    当前项目配置的名称(例如“Debug”)。

    $(Platform)

    当前项目平台的名称(例如“Win32”)。

    $(RootNameSpace)

    包含应用程序的命名空间(如果有)。

    $(IntDir)

    为中间文件指定的相对于项目目录的目录路径。此路径应具有尾部斜杠。这解析为Intermediate Directory 属性的值。

    $(OutDir)

    输出文件目录的路径,相对于项目目录。此路径应具有尾部斜杠。这解析为 Output Directory 属性的值。

    $(DevEnvDir)

    Visual Studio 2010 的安装目录(定义为驱动器 + 路径);包括尾部反斜杠“/”。

    $(ProjectDir)

    项目的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(ProjectPath)

    项目的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(ProjectName)

    项目的基名称。

    $(ProjectFileName)

    项目的文件名(定义为基本名称 + 文件扩展名)。

    $(ProjectExt)

    项目的文件扩展名。它包括“.”在文件扩展名之前。

    $(SolutionDir)

    解决方案的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(SolutionPath)

    解决方案的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(SolutionName)

    解决方案的基名称。

    $(SolutionFileName)

    解决方案的文件名(定义为基本名称 + 文件扩展名)。

    $(SolutionExt)

    解决方案的文件扩展名。它包括“.”在文件扩展名之前。

    $(TargetDir)

    生成的主输出文件的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(TargetPath)

    生成的主输出文件的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(TargetName)

    生成的主输出文件的基本名称。

    $(TargetFileName)

    生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。

    $(TargetExt)

    生成的主输出文件的文件扩展名。它包括“.”在文件扩展名之前。

    $(VSInstallDir)

    安装 Visual Studio 2010 的目录。 
    此属性包含目标 Visual Studio 的版本,该版本可能与宿主 Visual Studio 不同。例如,在使用 $(PlatformToolset) = v90 进行生成时,$(VSInstallDir) 包含 Visual Studio 2008 安装位置的路径。

    $(VCInstallDir)

    安装 Visual C++ 2010 的目录。 
    此属性包含目标 Visual C++ 的版本,该版本可能与宿主 Visual Studio 不同。例如,在使用 $(PlatformToolset) = v90 进行生成时,$(VCInstallDir) 包含 Visual C++ 2008 安装位置的路径。

    $(FrameworkDir)

    安装 .NET Framework 的目录。

    $(FrameworkVersion)

    Visual Studio 使用的 .NET Framework 版本。与 $(FrameworkDir) 相结合,就是 Visual Studio 使用的 .NET Framework 版本的完整路径。

    $(FrameworkSDKDir)

    安装 .NET Framework 的目录。.NET Framework 可能已作为 Visual Studio 2010 的一部分安装,也可能单独安装。

    $(WebDeployPath)

    从 Web 部署根到项目输出所属于的位置的相对路径。返回与 RelativePath 相同的值。

    $(WebDeployRoot)

    指向 <localhost> 位置的绝对路径。例如,c:/inetpub/wwwroot。

    $(FxCopDir)

    fxcop.cmd 文件的路径。fxcop.cmd 文件不和所有的 Visual C++ 版本一起安装。

     

     

    出处:http://msdn.microsoft.com/zh-cn/library/c02as0cs.aspx

    Visual Studio 2010
      >>Visual Studio
        >>Visual Studio 语言
          >>Visual C++
            >>Building a C/C++ Program
              >>在 Visual Studio 中生成 C++ 项目
                >>用于生成命令和属性的宏

    Visual Studio 2008 产生的临时文件

    http://www.cnblogs.com/owen-zhang/archive/2010/01/07/VisualStudioTemporaryFilesFolder.html

    Visual Studio临时文件存放的文件夹

     

    在使用Visual Studio开发工具的过程中,Visual Studio会在如下文件夹(以VS2008和.NET Framework 2.0为例)中生成一些临时性的文件:
    1、ReflectedSchemas:完整路径为“C:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas”。
    2、ReflectedTypeLibs:完整路径为“C:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0\ReflectedTypeLibs”。
    3、Temporary ASP.NET Files:完整路径为“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files“。

     

    我的系统不是C盘,用户名也不是Administrator,有批处理命令中用环境变量: 
    1、%USERPROFILE%\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas 
    2、%USERPROFILE%\Application Data\Microsoft\VisualStudio\9.0\ReflectedTypeLibs 
    3、%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 

    Windows 环境变量介绍

     http://hi.baidu.com/renol/blog/item/2b788458cc87cb8d810a185b.html

    Windows系统路径环境变量 
    %SystemDrive%        操作系统所在的分区号。如   C:

    %SystemRoot%         操作系统根目录。如 C:\WINDOWS

    %windir%                   操作系统根目录。如 C:\WINDOWS

    %ALLUSERSPROFILE%           相当于   C:\Documents and Settings\All Users

    %APPDATA%           相当于   C:\Documents and Settings\用户目录\Application Data

    %ProgramFiles%      相当于   C:\Program Files

    %CommonProgramFiles%          相当于   C:\Program Files\Common Files

    %HOMEDRIVE%       操作系统所在的分区号。如:C:

    %HOMEPATH%        相当于   \Documents and Settings\用户目录

    %USERPROFILE%   相当于   C:\Documents and Settings\用户目录

    %HOMEDRIVE%     = C:\                    当前启动的系统的所在分区 
    %SystemRoot%      = C:\WINDOWS           当前启动的系统的所在目录 
    %windir%                 = %SystemRoot% = C:\WINDOWS                   当前启动的系统的所在目录
    %USERPROFILE% = C:\Documents and Settings\sihochina           当前用户数据变量 
    %HOMEPATH%       = C:\Documents and Settings\sihochina           当前用户环境变量 
    %system%              = C:\WINDOWS\SYSTEM32   

    %ALLUSERSPROFILE% : 列出所有用户Profile文件位置。 
    %APPDATA% :   列出应用程序数据的默认存放位置。 
    %CD% :   列出当前目录。 
    %CLIENTNAME% :   列出联接到终端服务会话时客户端的NETBIOS名。 
    %CMDCMDLINE% :   列出启动当前cmd.exe所使用的命令行。 
    %CMDEXTVERSION% :   命令出当前命令处理程序扩展版本号。 
    %CommonProgramFiles% :   列出了常用文件的文件夹路径。 
    %COMPUTERNAME% :   列出了计算机名。 
    %COMSPEC% :   列出了可执行命令外壳(命令处理程序)的路径。 
    %DATE% :   列出当前日期。 
    %ERRORLEVEL% :   列出了最近使用的命令的错误代码。 
    %HOMEDRIVE% :   列出与用户主目录所在的驱动器盘符。 
    %HOMEPATH% :   列出用户主目录的完整路径。 
    %HOMESHARE% :   列出用户共享主目录的网络路径。 
    %LOGONSEVER% :   列出有效的当前登录会话的域名控制器名。 
    %NUMBER_OF_PROCESSORS% :   列出了计算机安装的处理器数。 
    %OS% :   列出操作系统的名字。(Windows XP 和 Windows 2000 列为 Windows_NT.) 
    %Path% :   列出了可执行文件的搜索路径。 
    %PATHEXT% :   列出操作系统认为可被执行的文件扩展名。 
    %PROCESSOR_ARCHITECTURE% :   列出了处理器的芯片架构。 
    %PROCESSOR_IDENTFIER% :   列出了处理器的描述。 
    %PROCESSOR_LEVEL% :   列出了计算机的处理器的型号。 
    %PROCESSOR_REVISION% :   列出了处理器的修订号。 
    %ProgramFiles% :   列出了Program Files文件夹的路径。 
    %PROMPT% :   列出了当前命令解释器的命令提示设置。 
    %RANDOM% :   列出界于0 和 32767之间的随机十进制数。 
    %SESSIONNAME% :   列出连接到终端服务会话时的连接和会话名。 
    %SYSTEMDRIVE% :   列出了Windows启动目录所在驱动器。 
    %SYSTEMROOT% :   列出了Windows启动目录的位置。 
    %TEMP% and %TMP% :   列出了当前登录的用户可用应用程序的默认临时目录。 
    %TIME% :   列出当前时间。 
    %USERDOMAIN% :   列出了包含用户帐号的域的名字。 
    %USERNAME% :   列出当前登录的用户的名字。 
    %USERPROFILE% :   列出当前用户Profile文件位置。 
    %WINDIR% :   列出操作系统目录的位置。

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

    %temp%        = %USERPROFILE%\Local Settings\Temp = C:\Documents and Settings\sihochina\Local Settings\Temp                                                                              当前用户TEMP缓存变量
    ------------------------------------------------------------------------ 
    例如:%windir%\drives 的实际路径就是 C:\WINDOWS\drives 目录。 
              所谓变量,就是指一个在不同环境中会有相对不同的值的、但在所有环境中都有相同约定的含义的量。 
              这些变量,可以在开始菜单-运行中输入,如输入%SystemRoot% ,系统会直接打开 C:\WINDOWS 目录。 
    如果你当前的系统是装在D盘的2000的话,上边这个变量的执行结果就是打开 D:\WINNT 目录了。

    如何在cmd命令行中查看、修改、删除与添加,设置环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。
    永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方法目前没试验过),另一种是通过我的电脑-〉属性-高级,来设置系统的环境变量(查看详细)。

    其次,明确一下环境变量的作用。

    它是操作系统用来指定运行环境的一些参数。比如临时文件夹位置和系统文件夹位置等。当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,比如“Path”就是一个变量,里面存储了一些常用的命令所存放的目录路径。

    第三:什么情况下进行设置?

    当启动cmd命令行窗口调用某一命令的时候,经常会出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”,如果你的拼写没有错误,同时计算机中确实存在这个程序,那么出现这个提示就是你的path变量没有设置正确,因为你的path路径,也就是默认路径里没有你的程序,同时你有没有给出你程序的绝对路径(因为你只是输入了命令或程序的名称而已),这是操作系统不知道去哪儿找你的程序,就会提示这个问题。

    第四:如何修改?

    1、查看当前所有可用的环境变量:输入 set 即可查看。

    2、查看某个环境变量:输入 “set 变量名”即可,比如想查看path变量的值,即输入 set path

    3、修改环境变量 :输入 “set 变量名=变量内容”即可,比如将path设置为“d:\nmake.exe”,只要输入set path="d:\nmake.exe"。注意,此修改环境变量是指用现在的内容去覆盖以前的内容,并不是追加。比如当我设置了上面的path路径之后,如果我再重新输入set path="c",再次查看path路径的时候,其值为“c:”,而不是“d:\nmake.exe”;“c”。

    4、设置为空:如果想将某一变量设置为空,输入“set 变量名= ”即可。如“set path=” 那么查看path的时候就为空。注意,上面已经说了,只在当前命令行窗口起作用。因此查看path的时候不要去右击“我的电脑”——“属性”........

    5、给变量追加内容(不同于3,那个是覆盖):输入“set 变量名=%变量名%;变量内容”。如,为path添加一个新的路径,输入“ set path=%path%;d:\nmake.exe”即可将d:\nmake.exe添加到path中,再次执行"set path=%path%;c:",那么,使用set path语句来查看的时候,将会有:d:\nmake.exe;c:,而不是像第3步中的只有c:。


    附录:下面贴上一些常用的环境变量及作用

    %ALLUSERSPROFILE% 局部 返回所有“用户配置文件”的位置。

    %APPDATA% 局部 返回默认情况下应用程序存储数据的位置。

    %CD% 局部 返回当前目录字符串。

    %CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。

    %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。

    %COMPUTERNAME% 系统 返回计算机的名称。

    %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。

    %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅Date。

    %ERRORLEVEL% 系统 返回最近使用过的命令的错误代码。通常用非零值表示错误。

    %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。

    %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。

    本文引用地址:http://blog.sciencenet.cn/blog-51026-566742.html

    我也一直不明白,以下两篇文章就能说明问题. 
    -------------------------------------------------- 
    标题: 怎样用脚本来设置环境变量  
    我想编一个脚本程序,用来对一组环境变量进行设置或取消 
    但由于脚本程序对变量的设置在退出脚本后就消失了,有没有间接办法能够实现这个功能?  
    你说的是 export ? 
    在脚本中使用export, 好像只在脚本中有效,退出这个脚本,设置的变量就没有了 
    在你的脚本中做设置 
    在~/.profile 或 ~/.bashrc 等 用source运行     
    我试了一下, 
    用source可以运行普通的shell脚本,也可达到设置环境变量的目的, 
    想问一下source是什么命令?用man和info没有查到说明   
    source 是 bash 的内嵌命令, 
    man bash 
    /source filename \[arguments\] 
    Thank u 
    source filename 
    or 
    代码: 
    . filename 
    source 是 bash 的内嵌命令, 
    man bash 
    /source filename \[arguments\] 
    source好像不一定是bash的‘内嵌命令’ 
    忘了是哪个发行版了 
    source是外部命令 
    $ type source 
    source is a shell builtin 
    哪个BT的发行版把 source 外部化了?忽忽。。 
    -------------------------------------------------- 
    我自己也是一个菜鸟,接触linux没有多久,最近在学习BASH的export命令时碰到了一个难道(书
    上说export是将自定义变量变成系统环境变量):我在一个脚本文件中定义一个了变量,然后expor
    t变量,按照我自己的想法,执行完这个脚本后,在提示符下一定可以用echo显示出它的值,可结
    果却不是这样,脚本执行完后用set根本看不到有这个变量存在。为什么呢?我百思不得其解,最后
    将问题贴出来,一位前辈告诉我说用source+脚本文件就可以了,我试了一下果然可以,但一个新
    的问题又出来了。我将脚本中export命令删除后,用source一样可以。那这个export好像没有什么
    用呀。  
    在经过多次尝试后发现了一些东西,是我自己猜的,如果有什么不对的地方,请指正,谢谢。  
    执行一个脚本时,会先开启一个子 shell环境(不知道执行其它程序是不是这样),然后将父shell
    中的所有系统环境变量复制过来,这个脚本中的语句就在子shell中执行。(也就是说父shell的环境
    变量在子shell中可以调用,但反过来就不行,如果在子shell中定义了环境变量,只对该shell或者它
    的子shell有效,当该子shell结束时,也可以理解为脚本执行完时,变量消失。)为了证明这一点,
    请看脚本内容:  
    test='value'  
    export test  
    这样的脚本执行完后,test实际上是不存在的。接着看下面的:  
    test='value'  
    export test  
    bash  
    这里在脚本最后一行再开一个子shell,该shell应该是脚本文件所在shell的子shell,这个脚本执行完
    后,是可以看到test这个变量的,因为现在是处于它的子shell中,当用exit退出子shell后,test变量
    消失。  
    如果用source对脚本进行执行时,<b>如果不加export,就不会在子shell中看到这个变量</b>,因
    为它还不是一个系统环境变量呀,如脚本内容是:  
    test='value'  
    用 source执行后,在shell下是能看到这个变量,但再执行bash开一个子shell时,test是不会被复
    Page 1 of  怎样用脚本来设置环境变量
    2012-5-16 http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml制到子shell中的,因为执行脚本文件其实也是在一个子shell中运行,所以我再建另一个脚本文件执
    行时,是不会输入任何东西的,内容如:echo $test。所以这点特别注意了,明明在提示符下可以
    用echo $test输出变量值,为什么把它放进脚本文件就不行了呢?  
    所以得出的结论是:1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退
    出;2、一个shell中的系统环境变量才会被复制到子shell 中(用export定义的变量);3、一个shell
    中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell
    中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。  
    后来根据版主的提示,整理了一下贴子:为什么一个脚本直接执行和用source执行不一行呢?这也
    是我自己碰到的一个问题。manual原文是这样的:Read and execute commands from filename in 
    the current shell environment and return the exit status of the last command executed from filena
    me.明白了为什么不一样了吧?直接执行一个脚本文件是在一个子shell中运行的,而source则是在
    当前shell环境中运行的。根据前面的内容,你也已经明白其中的道理了吧。  
    困扰了我几天的问题终于可以圆满的解决了。 
    -------------------------------------------------- 
     
    不过还有一个问题,听说子shell的环境变量与父shell的也不完全一样,究竟差别是什么? 
    source命令: 
    source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初
    始化文件,使之立即生效,而不必注销并重新登录。 
    用法:  
    source filename 或 . filename 
    source命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长
    串的命令,如: 
    make mrproper 
    make menuconfig 
    make dep 
    make clean 
    make bzImage 
    ………… 
    如果把这些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会
    很方便,而用source命令就可以做到这一点,它的作用就是把一个文件的内容当成shell来执行,先
    在linux的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如 make_command,在其中输
    入一下内容: 
    make mrproper && 
    make menuconfig && 
    make dep && 
    make clean && 
    make bzImage && 
    make modules && 
    make modules_install && 
    cp arch/i386/boot/bzImage /boot/vmlinuz_new && 
    cp System.map /boot && 
    vi /etc/lilo.conf && 
    lilo -v 
    文件建立好之后,每次编译核心的时候,只需要在/usr/src/linux-2.4.20下输入: 
    source make_command 
    即可,如果你用的不是lilo来引导系统,可以把最后两行去掉,配置自己的引导程序来引导内核。 
    顺便补充一点,&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后
    才可以继续执行它后面的命令。 
    ============================================================== 
    1、引言 
    Page 2 of  怎样用脚本来设置环境变量
    2012-5-16 http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml    在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“comman
    d not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐
    了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成
    部分。本文基于RedHat 9.0,详细讲解了环境变量定制的问题。 
    2、变量简介 
    Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每
    个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的
    运行环境进行定制,其方法就是修改相应的系统环境变量。 
    3、定制环境变量 
        环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是
    bash,但也可以重新设定或切换到其它的 Shell。根据发行版本的情况,bash有两个基本的系统级
    配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。
    前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,
    而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用
    户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,
    通过export来设置环境变量。下面通过几个实例来说明。

    3.1 使用命令echo显示环境变量 
      
    #本例使用echo显示常见的变量HOME 
    $ echo $HOME    
    /home/lqm 
      
    3.2 设置一个新的环境变量  
      
    $ export HELLO=”Hello!” 
    $ echo $HELLO 
    Hello! 
      
    3.3 使用env命令显示所有的环境变量 
      
    $ env 
    SSH_AGENT_PID=1875

    HOSTNAME=lqm 
    SHELL=/bin/bash 
    TERM=xterm 
    HISTSIZE=1000 
    …… 
      
    3.4  使用set命令显示所有本地定义的Shell变量 
      
    $ set 
    BASH=/bin/bash 
    …… 
      
    3.5  使用unset命令来清除环境变量 
      
    $ export TEST=”test”      #增加一个环境变量TEST 
    $ env | grep TEST           #此命令有输出,证明环境变量TEST已经存在了 
    TEST=test 
    $ unset $TEST                #删除环境变量TEST 
    $ env | grep TEST           #此命令无输出,证明环境变量TEST已经存在了 
      
    3.6  使用readonly命令设置只读变量  
    如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下: 
      
    $ export TEST="Test..."                                        #增加一个环境变量TEST 
    $ readonly TEST                                                   #将环境变量TEST设为只读 
    $ unset TEST                                                        #会发现此变量不能被删除 
    -bash: unset: TEST: cannot unset: readonly variable

    $ TEST="New"                                                     #会发现此变量不能被修改 
    -bash: TEST: readonly variable 
      
    3.7  用C程序来访问和设置环境变量 
    对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。 
    getenv()  访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所
    访问的环境变量不存在,则会返回NULL。 
    setenv()  在程序里面设置某个环境变量的函数。 
    unsetenv()  清除某个特定的环境变量的函数。 
    另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可
    以打印出当前运行环境里面的所有环境变量: 
      
    #include <stdio.h> 
    extern char**environ; 
    int main () 

    char**var; 
    for (var =environ;*var !=NULL;++var) 
    printf ("%s \n ",*var); 
    return 0; 

      
    3.8      通过修改环境变量定义文件来修改环境变量。 
    需要注意的是,一般情况下,这仅仅对于普通用户适用,避免修改根用户的环境定义文件,因
    为那样可能会造成潜在的危险。 
      
    $cd                                     #到用户根目录下 
    $ls -a                                  #查看所有文件,包含隐藏的文件 
    $vi .bash_profile                 #修改环境变量定义文件

      
    然后编辑你的PATH声明,其格式为: 
    PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 
    你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如
    果想立刻生效,则可执行下面的语句:$source .bash_profile 
    需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。完
    成后,可以通过$ echo $PATH查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于shel
    l搜索的路径之外的程序了。 
    4  总结 
        通过以上的设置,你可以有一个比较方便有效的环境来提高你的
    http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml

    1.2. 环境变量
    1.2.1. 如何从程序中获得/设置环境变量?

    获得一个环境变量可以通过调用‘getenv()’函数完成。

         #include <stdlib.h>
    
         char *getenv(const char *name);
          

    设置一个环境变量可以通过调用‘putenv()’函数完成。

         #include <stdlib.h>
    
         int putenv(char *string);
          

    变量string应该遵守"name=value"的格式。已经传递给putenv函数的字符串*不*能够被释放或变成无效,因为一个指向它的指针将由‘putenv()’保存。这意味着它必须是在静态数据区中或是从堆(heap)分配的。如果这个环境变量被另一个‘putenv()’的调用重新定义或删除,上述字符串可以被释放。

    /**************************译者增加***********************************

    因为putenv()有这样的局限,在使用中经常会导致一些错误,GNU libc 中还包括了两个BSD风格的函数:

    #include <stdlib.h>
    
    int setenv(const char *name, const char *value, int replace);
    void unsetenv(const char *name);
          

    setenv()/unsetenv()函数可以完成所有putenv()能做的事。setenv() 可以不受指针限制地向环境变量中添加新值,但传入参数不能为空(NULL)。当replace为0时,如果环境变量中已经有了name项,函数什么也不做(保留原项),否则原项被覆盖。 unsetenv()是用来把name项从环境变量中删除。注意:这两个函数只存在在BSD和GNU 库中,其他如SunOS系统中不包括它们,因此将会带来一些兼容问题。我们可以用getenv()/putenv()来实现:

    int setenv(const char *name,  const char *value, int replace)
    {
       char *envstr;
    
       if (name == NULL || value == NULL)
          return 1;
       if (getenv(name) !=NULL)
         {
            envstr = (char *) malloc(strlen(name) + strlen(value) + 2);
            sprintf (envstr, "%s=%s", name, value);
            if (putenv(envstr));
               return 1;
         }
       return 0;
    } 
          

    **************************译者增加***********************************/

    记住环境变量是被继承的;每一个进程有一个不同的环境变量表拷贝(译者注:从core文件中我们可以看出这一点)。结果是,你不能从一个其他进程改变当前进程的环境变量,比如shell进程。

    假设你想得到环境变量‘TERM’的值,你需要使用下面的程序:

         char *envvar;
    
         envvar=getenv("TERM");
    
         printf("The value for the environment variable TERM is ");
         if(envvar)
         {
             printf("%s\n",envvar);
         }
         else
         {
             printf("not set.\n");
         }
          

    现在假设你想创建一个新的环境变量,变量名为‘MYVAR’,值为‘MYVAL’。以下是你将怎样做:

         static char envbuf[256];
    
         sprintf(envbuf,"MYVAR=%s","MYVAL");
    
         if(putenv(envbuf))
         {
             printf("Sorry, putenv() couldn't find the memory for %s\n",envbuf);
             /* Might exit() or something here if you can't live without it */
         }
          

    1.2.2. 我怎样读取整个环境变量表?

    如果你不知道确切你想要的环境变量的名字,那么‘getenv()’函数不是很有用。在这种情况下,你必须更深入了解环境变量表的存储方式。

    全局变量,‘char **envrion’,包含指向环境字符串指针数组的指针,每一个字符串的形式为‘“NAME=value”’(译者注:和putenv()中的“string”的格式相同)。这个数组以一个‘空’(NULL)指针标记结束。这里是一个打印当前环境变量列表的小程序(类似‘printenv’)。

         #include <stdio.h>
    
         extern char **environ;
    
         int main()
         {
             char **ep = environ;
             char *p;
             while ((p = *ep++))
                 printf("%s\n", p);
             return 0;
         }
          

    一般情况下,‘envrion’变量作为可选的第三个参数传递给‘main()’;就是说,上面的程序可以写成:

         #include <stdio.h>
    
         int main(int argc, char **argv, char **envp)
         {
             char *p;
             while ((p = *envp++))
                 printf("%s\n", p);
             return 0;
         }
          

    虽然这种方法被广泛的操纵系统所支持(译者注:包括DOS),这种方法事实上并没有被POSIX(译者注:POSIX: Portable Operating System Interace)标准所定义。(一般的,它也比较没用)

    http://www.linuxforum.net/books/upfaq/x124.htm

    怎样检索环境变量(environment variables)的值?


    ANSI C标准提供了一个名为getenv()的函数来完成这项任务。getenv()函数很简单一把指向要查找的环境串的指针传递给它,它就返回一个指向该变量值的指针。下面的程序说明了如何从C中获得环境变量PATH的值:
    # include <stdlib. h>
    main(int argc, char *  *  argv)
    {
        char envValue[l29];             / *  buffer to store PATH * /
        char *  envPtr = envValue ;     / *  pointer to this buffer  * /
        envPtr = getenv("PATH");        /*  get the PATH */
        printf ("PATH= %s\n" , envPtr) ;   / * print the PATH * /
    }
    如果你编译并运行了这个程序,你就会看到与在DOS提示符下输入PATH命令完全相同的结果。事实上,你可以用getenv()检索AUTOEXEC.BAT文件中的或者系统引导后在DOS揭示符下输入的所有环境变量的值。

    这里有一个小技巧。当运行Windows时,Windows设置了一个名为WINDIR的新的环境变量,它包含了Windows目录的路径全名。下面这段简单的程序用来检索这个串:
    # include <stdlib. h>
    main(int argc, char * *  argv)
    {
        char envValue[l29];
        char *  envPtr = envValue ;
       envPtr = getenv("windir");
        / * print the Windows directory * /
        printf("The Windows Directory is  %s\n" ,  envPtr);
    }
    这个程序还可以用来判断当前是否正在运行Windows,以及DOS程序是否运行在一个DOS shell下,而不是运行在“真正的"DOS下。注意,程序中的windir字符串是小写——这一点很重要,因为它对大小写是敏感的。如果你使用WINDIR,getenv()就会返回一个NULL串(表示变量未找到错误)。

    用一putenv()函数也可以设置环境变量。但要注意,该函数不是一个ANSI标准函数,在某些编译程序中它可能不以这个名字出现,或者根本就不存在。你可以用一putenv()函数做许多事情。实际上,在上面那个例子中,Windows正是用这个函数创建了windir环境变量。

    http://see.xidian.edu.cn/cpp/html/1641.html

    实例:在VC2008中设置运行临时环境变量

    In VS 2008 and VS 2005 at least, you can specify changes to environment variables in the project settings.

    Open your project. Go to Project>Properties... Under Configuration Properties>Debugging, edit the 'Environment' value to set environment variables.

    For example, if you want to add the directory "c:\foo\bin" to the path when debugging your app, set the 'Environment' value to"PATH=%PATH%;c:\foo\bin".

    Here's a screenshot of the setting s dialog:


    http://www.404qa.com/q-182.html

     参考网址:

    http://blog.csdn.net/lyl8470/article/details/6111765      visual studio 中的环境变量 

    http://tangzhongxin.blog.163.com/blog/static/89219612011888433810/ Visual Studio 2008 产生的临时文件,和 Windows 环境变量介绍   

    http://www.cnblogs.com/waterlin/archive/2011/10/31/2230341.html  Visual Studio 2008 环境变量的配置

    展开全文
  • Visual Studio 2008 和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏...

     Visual Studio 2008  和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。

    可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 

    关于如何自己定义环境变量详见我的另一文章http://blog.csdn.net/jtop0/article/details/7574139

     

    说明

    $(RemoteMachine)

    在“调试”属性页上设置为 Remote Machine 属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置

    $(Configuration)

    当前项目配置的名称(例如“Debug”)。

    $(Platform)

    当前项目平台的名称(例如“Win32”)。

    $(RootNameSpace)

    包含应用程序的命名空间(如果有)。

    $(IntDir)

    为中间文件指定的相对于项目目录的目录路径。此路径应具有尾部斜杠。这解析为 Intermediate Directory 属性的值。

    $(OutDir)

    输出文件目录的路径,相对于项目目录。此路径应具有尾部斜杠。这解析为 Output Directory 属性的值。

    $(DevEnvDir)

    Visual Studio 2010 的安装目录(定义为驱动器 + 路径);包括尾部反斜杠“/”。

    $(ProjectDir)

    项目的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(ProjectPath)

    项目的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(ProjectName)

    项目的基名称。

    $(ProjectFileName)

    项目的文件名(定义为基本名称 + 文件扩展名)。

    $(ProjectExt)

    项目的文件扩展名。它包括“.”在文件扩展名之前。

    $(SolutionDir)

    解决方案的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(SolutionPath)

    解决方案的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(SolutionName)

    解决方案的基名称。

    $(SolutionFileName)

    解决方案的文件名(定义为基本名称 + 文件扩展名)。

    $(SolutionExt)

    解决方案的文件扩展名。它包括“.”在文件扩展名之前。

    $(TargetDir)

    生成的主输出文件的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(TargetPath)

    生成的主输出文件的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(TargetName)

    生成的主输出文件的基本名称。

    $(TargetFileName)

    生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。

    $(TargetExt)

    生成的主输出文件的文件扩展名。它包括“.”在文件扩展名之前。

    $(VSInstallDir)

    安装 Visual Studio 2010 的目录。 
    此属性包含目标 Visual Studio 的版本,该版本可能与宿主 Visual Studio 不同。例如,在使用 $(PlatformToolset) = v90 进行生成时,$(VSInstallDir) 包含 Visual Studio 2008 安装位置的路径。

    $(VCInstallDir)

    安装 Visual C++ 2010 的目录。 
    此属性包含目标 Visual C++ 的版本,该版本可能与宿主 Visual Studio 不同。例如,在使用 $(PlatformToolset) = v90 进行生成时,$(VCInstallDir) 包含 Visual C++ 2008 安装位置的路径。

    $(FrameworkDir)

    安装 .NET Framework 的目录。

    $(FrameworkVersion)

    Visual Studio 使用的 .NET Framework 版本。与 $(FrameworkDir) 相结合,就是 Visual Studio 使用的 .NET Framework 版本的完整路径。

    $(FrameworkSDKDir)

    安装 .NET Framework 的目录。.NET Framework 可能已作为 Visual Studio 2010 的一部分安装,也可能单独安装。

    $(WebDeployPath)

    从 Web 部署根到项目输出所属于的位置的相对路径。返回与 RelativePath 相同的值。

    $(WebDeployRoot)

    指向 <localhost> 位置的绝对路径。例如,c:/inetpub/wwwroot。

    $(FxCopDir)

    fxcop.cmd 文件的路径。fxcop.cmd 文件不和所有的 Visual C++ 版本一起安装。

     

     

    出处:http://msdn.microsoft.com/zh-cn/library/c02as0cs.aspx

    Visual Studio 2010
      >>Visual Studio
        >>Visual Studio 语言
          >>Visual C++
            >>Building a C/C++ Program
              >>在 Visual Studio 中生成 C++ 项目
                >>用于生成命令和属性的宏

    Visual Studio 2008 产生的临时文件

    http://www.cnblogs.com/owen-zhang/archive/2010/01/07/VisualStudioTemporaryFilesFolder.html

    Visual Studio临时文件存放的文件夹

     

    在使用Visual Studio开发工具的过程中,Visual Studio会在如下文件夹(以VS2008和.NET Framework 2.0为例)中生成一些临时性的文件:
    1、ReflectedSchemas:完整路径为“C:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas”。
    2、ReflectedTypeLibs:完整路径为“C:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0\ReflectedTypeLibs”。
    3、Temporary ASP.NET Files:完整路径为“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files“。

     

    我的系统不是C盘,用户名也不是Administrator,有批处理命令中用环境变量:
    1、%USERPROFILE%\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas
    2、%USERPROFILE%\Application Data\Microsoft\VisualStudio\9.0\ReflectedTypeLibs
    3、%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 

    Windows 环境变量介绍

     http://hi.baidu.com/renol/blog/item/2b788458cc87cb8d810a185b.html

    Windows系统路径环境变量
    %SystemDrive%        操作系统所在的分区号。如   C:

    %SystemRoot%         操作系统根目录。如 C:\WINDOWS

    %windir%                   操作系统根目录。如 C:\WINDOWS

    %ALLUSERSPROFILE%           相当于   C:\Documents and Settings\All Users

    %APPDATA%           相当于   C:\Documents and Settings\用户目录\Application Data

    %ProgramFiles%      相当于   C:\Program Files

    %CommonProgramFiles%          相当于   C:\Program Files\Common Files

    %HOMEDRIVE%       操作系统所在的分区号。如:C:

    %HOMEPATH%        相当于   \Documents and Settings\用户目录

    %USERPROFILE%   相当于   C:\Documents and Settings\用户目录

    %HOMEDRIVE%     = C:\                    当前启动的系统的所在分区
    %SystemRoot%      = C:\WINDOWS           当前启动的系统的所在目录
    %windir%                 = %SystemRoot% = C:\WINDOWS                   当前启动的系统的所在目录
    %USERPROFILE% = C:\Documents and Settings\sihochina           当前用户数据变量
    %HOMEPATH%       = C:\Documents and Settings\sihochina           当前用户环境变量
    %system%              = C:\WINDOWS\SYSTEM32   

    %ALLUSERSPROFILE% : 列出所有用户Profile文件位置。
    %APPDATA% :   列出应用程序数据的默认存放位置。
    %CD% :   列出当前目录。
    %CLIENTNAME% :   列出联接到终端服务会话时客户端的NETBIOS名。
    %CMDCMDLINE% :   列出启动当前cmd.exe所使用的命令行。
    %CMDEXTVERSION% :   命令出当前命令处理程序扩展版本号。
    %CommonProgramFiles% :   列出了常用文件的文件夹路径。
    %COMPUTERNAME% :   列出了计算机名。
    %COMSPEC% :   列出了可执行命令外壳(命令处理程序)的路径。
    %DATE% :   列出当前日期。
    %ERRORLEVEL% :   列出了最近使用的命令的错误代码。
    %HOMEDRIVE% :   列出与用户主目录所在的驱动器盘符。
    %HOMEPATH% :   列出用户主目录的完整路径。
    %HOMESHARE% :   列出用户共享主目录的网络路径。
    %LOGONSEVER% :   列出有效的当前登录会话的域名控制器名。
    %NUMBER_OF_PROCESSORS% :   列出了计算机安装的处理器数。
    %OS% :   列出操作系统的名字。(Windows XP 和 Windows 2000 列为 Windows_NT.)
    %Path% :   列出了可执行文件的搜索路径。
    %PATHEXT% :   列出操作系统认为可被执行的文件扩展名。
    %PROCESSOR_ARCHITECTURE% :   列出了处理器的芯片架构。
    %PROCESSOR_IDENTFIER% :   列出了处理器的描述。
    %PROCESSOR_LEVEL% :   列出了计算机的处理器的型号。
    %PROCESSOR_REVISION% :   列出了处理器的修订号。
    %ProgramFiles% :   列出了Program Files文件夹的路径。
    %PROMPT% :   列出了当前命令解释器的命令提示设置。
    %RANDOM% :   列出界于0 和 32767之间的随机十进制数。
    %SESSIONNAME% :   列出连接到终端服务会话时的连接和会话名。
    %SYSTEMDRIVE% :   列出了Windows启动目录所在驱动器。
    %SYSTEMROOT% :   列出了Windows启动目录的位置。
    %TEMP% and %TMP% :   列出了当前登录的用户可用应用程序的默认临时目录。
    %TIME% :   列出当前时间。
    %USERDOMAIN% :   列出了包含用户帐号的域的名字。
    %USERNAME% :   列出当前登录的用户的名字。
    %USERPROFILE% :   列出当前用户Profile文件位置。
    %WINDIR% :   列出操作系统目录的位置。

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

    %temp%        = %USERPROFILE%\Local Settings\Temp = C:\Documents and Settings\sihochina\Local Settings\Temp                                                                              当前用户TEMP缓存变量
    ------------------------------------------------------------------------
    例如:%windir%\drives 的实际路径就是 C:\WINDOWS\drives 目录。
              所谓变量,就是指一个在不同环境中会有相对不同的值的、但在所有环境中都有相同约定的含义的量。
              这些变量,可以在开始菜单-运行中输入,如输入%SystemRoot% ,系统会直接打开 C:\WINDOWS 目录。
    如果你当前的系统是装在D盘的2000的话,上边这个变量的执行结果就是打开 D:\WINNT 目录了。

    如何在cmd命令行中查看、修改、删除与添加,设置环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。
    永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方法目前没试验过),另一种是通过我的电脑-〉属性-高级,来设置系统的环境变量(查看详细)。

    其次,明确一下环境变量的作用。

    它是操作系统用来指定运行环境的一些参数。比如临时文件夹位置和系统文件夹位置等。当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,比如“Path”就是一个变量,里面存储了一些常用的命令所存放的目录路径。

    第三:什么情况下进行设置?

    当启动cmd命令行窗口调用某一命令的时候,经常会出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”,如果你的拼写没有错误,同时计算机中确实存在这个程序,那么出现这个提示就是你的path变量没有设置正确,因为你的path路径,也就是默认路径里没有你的程序,同时你有没有给出你程序的绝对路径(因为你只是输入了命令或程序的名称而已),这是操作系统不知道去哪儿找你的程序,就会提示这个问题。

    第四:如何修改?

    1、查看当前所有可用的环境变量:输入 set 即可查看。

    2、查看某个环境变量:输入 “set 变量名”即可,比如想查看path变量的值,即输入 set path

    3、修改环境变量 :输入 “set 变量名=变量内容”即可,比如将path设置为“d:\nmake.exe”,只要输入set path="d:\nmake.exe"。注意,此修改环境变量是指用现在的内容去覆盖以前的内容,并不是追加。比如当我设置了上面的path路径之后,如果我再重新输入set path="c",再次查看path路径的时候,其值为“c:”,而不是“d:\nmake.exe”;“c”。

    4、设置为空:如果想将某一变量设置为空,输入“set 变量名= ”即可。如“set path=” 那么查看path的时候就为空。注意,上面已经说了,只在当前命令行窗口起作用。因此查看path的时候不要去右击“我的电脑”——“属性”........

    5、给变量追加内容(不同于3,那个是覆盖):输入“set 变量名=%变量名%;变量内容”。如,为path添加一个新的路径,输入“ set path=%path%;d:\nmake.exe”即可将d:\nmake.exe添加到path中,再次执行"set path=%path%;c:",那么,使用set path语句来查看的时候,将会有:d:\nmake.exe;c:,而不是像第3步中的只有c:。


    附录:下面贴上一些常用的环境变量及作用

    %ALLUSERSPROFILE% 局部 返回所有“用户配置文件”的位置。

    %APPDATA% 局部 返回默认情况下应用程序存储数据的位置。

    %CD% 局部 返回当前目录字符串。

    %CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。

    %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。

    %COMPUTERNAME% 系统 返回计算机的名称。

    %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。

    %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅Date。

    %ERRORLEVEL% 系统 返回最近使用过的命令的错误代码。通常用非零值表示错误。

    %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。

    %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。

    本文引用地址:http://blog.sciencenet.cn/blog-51026-566742.html

    我也一直不明白,以下两篇文章就能说明问题.
    --------------------------------------------------
    标题: 怎样用脚本来设置环境变量 
    我想编一个脚本程序,用来对一组环境变量进行设置或取消
    但由于脚本程序对变量的设置在退出脚本后就消失了,有没有间接办法能够实现这个功能? 
    你说的是 export ?
    在脚本中使用export, 好像只在脚本中有效,退出这个脚本,设置的变量就没有了
    在你的脚本中做设置
    在~/.profile 或 ~/.bashrc 等 用source运行    
    我试了一下,
    用source可以运行普通的shell脚本,也可达到设置环境变量的目的,
    想问一下source是什么命令?用man和info没有查到说明  
    source 是 bash 的内嵌命令,
    man bash
    /source filename \[arguments\]
    Thank u
    source filename
    or
    代码:
    . filename
    source 是 bash 的内嵌命令,
    man bash
    /source filename \[arguments\]
    source好像不一定是bash的‘内嵌命令’
    忘了是哪个发行版了
    source是外部命令
    $ type source
    source is a shell builtin
    哪个BT的发行版把 source 外部化了?忽忽。。
    --------------------------------------------------
    我自己也是一个菜鸟,接触linux没有多久,最近在学习BASH的export命令时碰到了一个难道(书
    上说export是将自定义变量变成系统环境变量):我在一个脚本文件中定义一个了变量,然后expor
    t变量,按照我自己的想法,执行完这个脚本后,在提示符下一定可以用echo显示出它的值,可结
    果却不是这样,脚本执行完后用set根本看不到有这个变量存在。为什么呢?我百思不得其解,最后
    将问题贴出来,一位前辈告诉我说用source+脚本文件就可以了,我试了一下果然可以,但一个新
    的问题又出来了。我将脚本中export命令删除后,用source一样可以。那这个export好像没有什么
    用呀。 
    在经过多次尝试后发现了一些东西,是我自己猜的,如果有什么不对的地方,请指正,谢谢。 
    执行一个脚本时,会先开启一个子 shell环境(不知道执行其它程序是不是这样),然后将父shell
    中的所有系统环境变量复制过来,这个脚本中的语句就在子shell中执行。(也就是说父shell的环境
    变量在子shell中可以调用,但反过来就不行,如果在子shell中定义了环境变量,只对该shell或者它
    的子shell有效,当该子shell结束时,也可以理解为脚本执行完时,变量消失。)为了证明这一点,
    请看脚本内容: 
    test='value' 
    export test 
    这样的脚本执行完后,test实际上是不存在的。接着看下面的: 
    test='value' 
    export test 
    bash 
    这里在脚本最后一行再开一个子shell,该shell应该是脚本文件所在shell的子shell,这个脚本执行完
    后,是可以看到test这个变量的,因为现在是处于它的子shell中,当用exit退出子shell后,test变量
    消失。 
    如果用source对脚本进行执行时,<b>如果不加export,就不会在子shell中看到这个变量</b>,因
    为它还不是一个系统环境变量呀,如脚本内容是: 
    test='value' 
    用 source执行后,在shell下是能看到这个变量,但再执行bash开一个子shell时,test是不会被复
    Page 1 of  怎样用脚本来设置环境变量
    2012-5-16 http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml制到子shell中的,因为执行脚本文件其实也是在一个子shell中运行,所以我再建另一个脚本文件执
    行时,是不会输入任何东西的,内容如:echo $test。所以这点特别注意了,明明在提示符下可以
    用echo $test输出变量值,为什么把它放进脚本文件就不行了呢? 
    所以得出的结论是:1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退
    出;2、一个shell中的系统环境变量才会被复制到子shell 中(用export定义的变量);3、一个shell
    中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell
    中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。 
    后来根据版主的提示,整理了一下贴子:为什么一个脚本直接执行和用source执行不一行呢?这也
    是我自己碰到的一个问题。manual原文是这样的:Read and execute commands from filename in
    the current shell environment and return the exit status of the last command executed from filena
    me.明白了为什么不一样了吧?直接执行一个脚本文件是在一个子shell中运行的,而source则是在
    当前shell环境中运行的。根据前面的内容,你也已经明白其中的道理了吧。 
    困扰了我几天的问题终于可以圆满的解决了。
    --------------------------------------------------
     
    不过还有一个问题,听说子shell的环境变量与父shell的也不完全一样,究竟差别是什么?
    source命令:
    source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初
    始化文件,使之立即生效,而不必注销并重新登录。
    用法: 
    source filename 或 . filename
    source命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长
    串的命令,如:
    make mrproper
    make menuconfig
    make dep
    make clean
    make bzImage
    …………
    如果把这些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会
    很方便,而用source命令就可以做到这一点,它的作用就是把一个文件的内容当成shell来执行,先
    在linux的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如 make_command,在其中输
    入一下内容:
    make mrproper &&
    make menuconfig &&
    make dep &&
    make clean &&
    make bzImage &&
    make modules &&
    make modules_install &&
    cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
    cp System.map /boot &&
    vi /etc/lilo.conf &&
    lilo -v
    文件建立好之后,每次编译核心的时候,只需要在/usr/src/linux-2.4.20下输入:
    source make_command
    即可,如果你用的不是lilo来引导系统,可以把最后两行去掉,配置自己的引导程序来引导内核。
    顺便补充一点,&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后
    才可以继续执行它后面的命令。
    ==============================================================
    1、引言
    Page 2 of  怎样用脚本来设置环境变量
    2012-5-16 http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml    在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“comman
    d not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐
    了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成
    部分。本文基于RedHat 9.0,详细讲解了环境变量定制的问题。
    2、变量简介
    Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每
    个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的
    运行环境进行定制,其方法就是修改相应的系统环境变量。
    3、定制环境变量
        环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是
    bash,但也可以重新设定或切换到其它的 Shell。根据发行版本的情况,bash有两个基本的系统级
    配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。
    前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,
    而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用
    户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,
    通过export来设置环境变量。下面通过几个实例来说明。

    3.1 使用命令echo显示环境变量
     
    #本例使用echo显示常见的变量HOME
    $ echo $HOME   
    /home/lqm
     
    3.2 设置一个新的环境变量 
     
    $ export HELLO=”Hello!”
    $ echo $HELLO
    Hello!
     
    3.3 使用env命令显示所有的环境变量
     
    $ env
    SSH_AGENT_PID=1875

    HOSTNAME=lqm
    SHELL=/bin/bash
    TERM=xterm
    HISTSIZE=1000
    ……
     
    3.4  使用set命令显示所有本地定义的Shell变量
     
    $ set
    BASH=/bin/bash
    ……
     
    3.5  使用unset命令来清除环境变量
     
    $ export TEST=”test”      #增加一个环境变量TEST
    $ env | grep TEST           #此命令有输出,证明环境变量TEST已经存在了
    TEST=test
    $ unset $TEST                #删除环境变量TEST
    $ env | grep TEST           #此命令无输出,证明环境变量TEST已经存在了
     
    3.6  使用readonly命令设置只读变量 
    如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
     
    $ export TEST="Test..."                                        #增加一个环境变量TEST
    $ readonly TEST                                                   #将环境变量TEST设为只读
    $ unset TEST                                                        #会发现此变量不能被删除
    -bash: unset: TEST: cannot unset: readonly variable

    $ TEST="New"                                                     #会发现此变量不能被修改
    -bash: TEST: readonly variable
     
    3.7  用C程序来访问和设置环境变量
    对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。
    getenv()  访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所
    访问的环境变量不存在,则会返回NULL。
    setenv()  在程序里面设置某个环境变量的函数。
    unsetenv()  清除某个特定的环境变量的函数。
    另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可
    以打印出当前运行环境里面的所有环境变量:
     
    #include <stdio.h>
    extern char**environ;
    int main ()
    {
    char**var;
    for (var =environ;*var !=NULL;++var)
    printf ("%s \n ",*var);
    return 0;
    }
     
    3.8      通过修改环境变量定义文件来修改环境变量
    需要注意的是,一般情况下,这仅仅对于普通用户适用,避免修改根用户的环境定义文件,因
    为那样可能会造成潜在的危险。
     
    $cd                                     #到用户根目录下
    $ls -a                                  #查看所有文件,包含隐藏的文件
    $vi .bash_profile                 #修改环境变量定义文件

     
    然后编辑你的PATH声明,其格式为:
    PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
    你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如
    果想立刻生效,则可执行下面的语句:$source .bash_profile
    需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。完
    成后,可以通过$ echo $PATH查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于shel
    l搜索的路径之外的程序了。
    4  总结
        通过以上的设置,你可以有一个比较方便有效的环境来提高你的
    http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml

    1.2. 环境变量
    1.2.1. 如何从程序中获得/设置环境变量?

    获得一个环境变量可以通过调用‘getenv()’函数完成。

         #include <stdlib.h>
    
         char *getenv(const char *name);
          

    设置一个环境变量可以通过调用‘putenv()’函数完成。

         #include <stdlib.h>
    
         int putenv(char *string);
          

    变量string应该遵守"name=value"的格式。已经传递给putenv函数的字符串*不*能够被释放或变成无效,因为一个指向它的指针将由‘putenv()’保存。这意味着它必须是在静态数据区中或是从堆(heap)分配的。如果这个环境变量被另一个‘putenv()’的调用重新定义或删除,上述字符串可以被释放。

    /**************************译者增加***********************************

    因为putenv()有这样的局限,在使用中经常会导致一些错误,GNU libc 中还包括了两个BSD风格的函数:

    #include <stdlib.h>
    
    int setenv(const char *name, const char *value, int replace);
    void unsetenv(const char *name);
          

    setenv()/unsetenv()函数可以完成所有putenv()能做的事。setenv() 可以不受指针限制地向环境变量中添加新值,但传入参数不能为空(NULL)。当replace为0时,如果环境变量中已经有了name项,函数什么也不做(保留原项),否则原项被覆盖。 unsetenv()是用来把name项从环境变量中删除。注意:这两个函数只存在在BSD和GNU 库中,其他如SunOS系统中不包括它们,因此将会带来一些兼容问题。我们可以用 getenv()/putenv()来实现:

    int setenv(const char *name,  const char *value, int replace)
    {
       char *envstr;
    
       if (name == NULL || value == NULL)
          return 1;
       if (getenv(name) !=NULL)
         {
            envstr = (char *) malloc(strlen(name) + strlen(value) + 2);
            sprintf (envstr, "%s=%s", name, value);
            if (putenv(envstr));
               return 1;
         }
       return 0;
    } 
          

    **************************译者增加***********************************/

    记住环境变量是被继承的;每一个进程有一个不同的环境变量表拷贝(译者注:从core文件中我们可以看出这一点)。结果是,你不能从一个其他进程改变当前进程的环境变量,比如shell进程。

    假设你想得到环境变量‘TERM’的值,你需要使用下面的程序:

         char *envvar;
    
         envvar=getenv("TERM");
    
         printf("The value for the environment variable TERM is ");
         if(envvar)
         {
             printf("%s\n",envvar);
         }
         else
         {
             printf("not set.\n");
         }
          

    现在假设你想创建一个新的环境变量,变量名为‘MYVAR’,值为‘MYVAL’。以下是你将怎样做:

         static char envbuf[256];
    
         sprintf(envbuf,"MYVAR=%s","MYVAL");
    
         if(putenv(envbuf))
         {
             printf("Sorry, putenv() couldn't find the memory for %s\n",envbuf);
             /* Might exit() or something here if you can't live without it */
         }
          

    1.2.2. 我怎样读取整个环境变量表?

    如果你不知道确切你想要的环境变量的名字,那么‘getenv()’函数不是很有用。在这种情况下,你必须更深入了解环境变量表的存储方式。

    全局变量,‘char **envrion’,包含指向环境字符串指针数组的指针,每一个字符串的形式为‘“NAME=value”’(译者注:和putenv()中的“string”的格式相同)。这个数组以一个‘空’(NULL)指针标记结束。这里是一个打印当前环境变量列表的小程序(类似‘printenv’)。

         #include <stdio.h>
    
         extern char **environ;
    
         int main()
         {
             char **ep = environ;
             char *p;
             while ((p = *ep++))
                 printf("%s\n", p);
             return 0;
         }
          

    一般情况下,‘envrion’变量作为可选的第三个参数传递给‘main()’;就是说,上面的程序可以写成:

         #include <stdio.h>
    
         int main(int argc, char **argv, char **envp)
         {
             char *p;
             while ((p = *envp++))
                 printf("%s\n", p);
             return 0;
         }
          

    虽然这种方法被广泛的操纵系统所支持(译者注:包括DOS),这种方法事实上并没有被POSIX(译者注:POSIX: Portable Operating System Interace)标准所定义。(一般的,它也比较没用)

    http://www.linuxforum.net/books/upfaq/x124.htm

    怎样检索环境变量(environment variables)的值?


    ANSI C标准提供了一个名为getenv()的函数来完成这项任务。getenv()函数很简单一把指向要查找的环境串的指针传递给它,它就返回一个指向该变量值的指针。下面的程序说明了如何从C中获得环境变量PATH的值:
    # include <stdlib. h>
    main(int argc, char *  *  argv)
    {
        char envValue[l29];             / *  buffer to store PATH * /
        char *  envPtr = envValue ;     / *  pointer to this buffer  * /
        envPtr = getenv("PATH");        /*  get the PATH */
        printf ("PATH= %s\n" , envPtr) ;   / * print the PATH * /
    }
    如果你编译并运行了这个程序,你就会看到与在DOS提示符下输入PATH命令完全相同的结果。事实上,你可以用getenv()检索AUTOEXEC.BAT文件中的或者系统引导后在DOS揭示符下输入的所有环境变量的值。

    这里有一个小技巧。当运行Windows时,Windows设置了一个名为WINDIR的新的环境变量,它包含了Windows目录的路径全名。下面这段简单的程序用来检索这个串:
    # include <stdlib. h>
    main(int argc, char * *  argv)
    {
        char envValue[l29];
        char *  envPtr = envValue ;
       envPtr = getenv("windir");
        / * print the Windows directory * /
        printf("The Windows Directory is  %s\n" ,  envPtr);
    }
    这个程序还可以用来判断当前是否正在运行Windows,以及DOS程序是否运行在一个DOS shell下,而不是运行在“真正的"DOS下。注意,程序中的windir字符串是小写——这一点很重要,因为它对大小写是敏感的。如果你使用WINDIR,getenv()就会返回一个NULL串(表示变量未找到错误)。

    用一putenv()函数也可以设置环境变量。但要注意,该函数不是一个ANSI标准函数,在某些编译程序中它可能不以这个名字出现,或者根本就不存在。你可以用一putenv()函数做许多事情。实际上,在上面那个例子中,Windows正是用这个函数创建了windir环境变量。

    http://see.xidian.edu.cn/cpp/html/1641.html

    实例:在VC2008中设置运行临时环境变量

    In VS 2008 and VS 2005 at least, you can specify changes to environment variables in the project settings.

    Open your project. Go to Project>Properties... Under Configuration Properties>Debugging, edit the 'Environment' value to set environment variables.

    For example, if you want to add the directory "c:\foo\bin" to the path when debugging your app, set the 'Environment' value to"PATH=%PATH%;c:\foo\bin".

    Here's a screenshot of the setting s dialog:


    http://www.404qa.com/q-182.html

     参考网址:

    http://blog.csdn.net/lyl8470/article/details/6111765      visual studio 中的环境变量 

    http://tangzhongxin.blog.163.com/blog/static/89219612011888433810/ Visual Studio 2008 产生的临时文件,和 Windows 环境变量介绍   

    http://www.cnblogs.com/waterlin/archive/2011/10/31/2230341.html  Visual Studio 2008 环境变量的配置

    展开全文
  • Visual Studio 2008 和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏...
    Visual Studio 2008  和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用。
    

    可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 

    关于如何自己定义环境变量详见我的另一文章http://blog.csdn.net/jtop0/article/details/7574139

     

    说明

    $(RemoteMachine)

    在“调试”属性页上设置为 Remote Machine 属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置

    $(Configuration)

    当前项目配置的名称(例如“Debug”)。

    $(Platform)

    当前项目平台的名称(例如“Win32”)。

    $(RootNameSpace)

    包含应用程序的命名空间(如果有)。

    $(IntDir)

    为中间文件指定的相对于项目目录的目录路径。此路径应具有尾部斜杠。这解析为 Intermediate Directory 属性的值。

    $(OutDir)

    输出文件目录的路径,相对于项目目录。此路径应具有尾部斜杠。这解析为 Output Directory 属性的值。

    $(DevEnvDir)

    Visual Studio 2010 的安装目录(定义为驱动器 + 路径);包括尾部反斜杠“/”。

    $(ProjectDir)

    项目的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(ProjectPath)

    项目的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(ProjectName)

    项目的基名称。

    $(ProjectFileName)

    项目的文件名(定义为基本名称 + 文件扩展名)。

    $(ProjectExt)

    项目的文件扩展名。它包括“.”在文件扩展名之前。

    $(SolutionDir)

    解决方案的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(SolutionPath)

    解决方案的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(SolutionName)

    解决方案的基名称。

    $(SolutionFileName)

    解决方案的文件名(定义为基本名称 + 文件扩展名)。

    $(SolutionExt)

    解决方案的文件扩展名。它包括“.”在文件扩展名之前。

    $(TargetDir)

    生成的主输出文件的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“/”。

    $(TargetPath)

    生成的主输出文件的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。

    $(TargetName)

    生成的主输出文件的基本名称。

    $(TargetFileName)

    生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。

    $(TargetExt)

    生成的主输出文件的文件扩展名。它包括“.”在文件扩展名之前。

    $(VSInstallDir)

    安装 Visual Studio 2010 的目录。 
    此属性包含目标 Visual Studio 的版本,该版本可能与宿主 Visual Studio 不同。例如,在使用 $(PlatformToolset) = v90 进行生成时,$(VSInstallDir) 包含 Visual Studio 2008 安装位置的路径。

    $(VCInstallDir)

    安装 Visual C++ 2010 的目录。 
    此属性包含目标 Visual C++ 的版本,该版本可能与宿主 Visual Studio 不同。例如,在使用 $(PlatformToolset) = v90 进行生成时,$(VCInstallDir) 包含 Visual C++ 2008 安装位置的路径。

    $(FrameworkDir)

    安装 .NET Framework 的目录。

    $(FrameworkVersion)

    Visual Studio 使用的 .NET Framework 版本。与 $(FrameworkDir) 相结合,就是 Visual Studio 使用的 .NET Framework 版本的完整路径。

    $(FrameworkSDKDir)

    安装 .NET Framework 的目录。.NET Framework 可能已作为 Visual Studio 2010 的一部分安装,也可能单独安装。

    $(WebDeployPath)

    从 Web 部署根到项目输出所属于的位置的相对路径。返回与 RelativePath 相同的值。

    $(WebDeployRoot)

    指向 <localhost> 位置的绝对路径。例如,c:/inetpub/wwwroot。

    $(FxCopDir)

    fxcop.cmd 文件的路径。fxcop.cmd 文件不和所有的 Visual C++ 版本一起安装。

     

     

    出处:http://msdn.microsoft.com/zh-cn/library/c02as0cs.aspx

    Visual Studio 2010
      >>Visual Studio
        >>Visual Studio 语言
          >>Visual C++
            >>Building a C/C++ Program
              >>在 Visual Studio 中生成 C++ 项目
                >>用于生成命令和属性的宏

    Visual Studio 2008 产生的临时文件

    http://www.cnblogs.com/owen-zhang/archive/2010/01/07/VisualStudioTemporaryFilesFolder.html

    Visual Studio临时文件存放的文件夹

     

    在使用Visual Studio开发工具的过程中,Visual Studio会在如下文件夹(以VS2008和.NET Framework 2.0为例)中生成一些临时性的文件:
    1、ReflectedSchemas:完整路径为“C:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas”。
    2、ReflectedTypeLibs:完整路径为“C:\Documents and Settings\Administrator\Application Data\Microsoft\VisualStudio\9.0\ReflectedTypeLibs”。
    3、Temporary ASP.NET Files:完整路径为“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files“。

     

    我的系统不是C盘,用户名也不是Administrator,有批处理命令中用环境变量:
    1、%USERPROFILE%\Application Data\Microsoft\VisualStudio\9.0\ReflectedSchemas
    2、%USERPROFILE%\Application Data\Microsoft\VisualStudio\9.0\ReflectedTypeLibs
    3、%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 

    Windows 环境变量介绍

     http://hi.baidu.com/renol/blog/item/2b788458cc87cb8d810a185b.html

    Windows系统路径环境变量
    %SystemDrive%        操作系统所在的分区号。如   C:

    %SystemRoot%         操作系统根目录。如 C:\WINDOWS

    %windir%                   操作系统根目录。如 C:\WINDOWS

    %ALLUSERSPROFILE%           相当于   C:\Documents and Settings\All Users

    %APPDATA%           相当于   C:\Documents and Settings\用户目录\Application Data

    %ProgramFiles%      相当于   C:\Program Files

    %CommonProgramFiles%          相当于   C:\Program Files\Common Files

    %HOMEDRIVE%       操作系统所在的分区号。如:C:

    %HOMEPATH%        相当于   \Documents and Settings\用户目录

    %USERPROFILE%   相当于   C:\Documents and Settings\用户目录

    %HOMEDRIVE%     = C:\                    当前启动的系统的所在分区
    %SystemRoot%      = C:\WINDOWS           当前启动的系统的所在目录
    %windir%                 = %SystemRoot% = C:\WINDOWS                   当前启动的系统的所在目录
    %USERPROFILE% = C:\Documents and Settings\sihochina           当前用户数据变量
    %HOMEPATH%       = C:\Documents and Settings\sihochina           当前用户环境变量
    %system%              = C:\WINDOWS\SYSTEM32   

    %ALLUSERSPROFILE% : 列出所有用户Profile文件位置。
    %APPDATA% :   列出应用程序数据的默认存放位置。
    %CD% :   列出当前目录。
    %CLIENTNAME% :   列出联接到终端服务会话时客户端的NETBIOS名。
    %CMDCMDLINE% :   列出启动当前cmd.exe所使用的命令行。
    %CMDEXTVERSION% :   命令出当前命令处理程序扩展版本号。
    %CommonProgramFiles% :   列出了常用文件的文件夹路径。
    %COMPUTERNAME% :   列出了计算机名。
    %COMSPEC% :   列出了可执行命令外壳(命令处理程序)的路径。
    %DATE% :   列出当前日期。
    %ERRORLEVEL% :   列出了最近使用的命令的错误代码。
    %HOMEDRIVE% :   列出与用户主目录所在的驱动器盘符。
    %HOMEPATH% :   列出用户主目录的完整路径。
    %HOMESHARE% :   列出用户共享主目录的网络路径。
    %LOGONSEVER% :   列出有效的当前登录会话的域名控制器名。
    %NUMBER_OF_PROCESSORS% :   列出了计算机安装的处理器数。
    %OS% :   列出操作系统的名字。(Windows XP 和 Windows 2000 列为 Windows_NT.)
    %Path% :   列出了可执行文件的搜索路径。
    %PATHEXT% :   列出操作系统认为可被执行的文件扩展名。
    %PROCESSOR_ARCHITECTURE% :   列出了处理器的芯片架构。
    %PROCESSOR_IDENTFIER% :   列出了处理器的描述。
    %PROCESSOR_LEVEL% :   列出了计算机的处理器的型号。
    %PROCESSOR_REVISION% :   列出了处理器的修订号。
    %ProgramFiles% :   列出了Program Files文件夹的路径。
    %PROMPT% :   列出了当前命令解释器的命令提示设置。
    %RANDOM% :   列出界于0 和 32767之间的随机十进制数。
    %SESSIONNAME% :   列出连接到终端服务会话时的连接和会话名。
    %SYSTEMDRIVE% :   列出了Windows启动目录所在驱动器。
    %SYSTEMROOT% :   列出了Windows启动目录的位置。
    %TEMP% and %TMP% :   列出了当前登录的用户可用应用程序的默认临时目录。
    %TIME% :   列出当前时间。
    %USERDOMAIN% :   列出了包含用户帐号的域的名字。
    %USERNAME% :   列出当前登录的用户的名字。
    %USERPROFILE% :   列出当前用户Profile文件位置。
    %WINDIR% :   列出操作系统目录的位置。

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

    %temp%        = %USERPROFILE%\Local Settings\Temp = C:\Documents and Settings\sihochina\Local Settings\Temp                                                                              当前用户TEMP缓存变量
    ------------------------------------------------------------------------
    例如:%windir%\drives 的实际路径就是 C:\WINDOWS\drives 目录。
              所谓变量,就是指一个在不同环境中会有相对不同的值的、但在所有环境中都有相同约定的含义的量。
              这些变量,可以在开始菜单-运行中输入,如输入%SystemRoot% ,系统会直接打开 C:\WINDOWS 目录。
    如果你当前的系统是装在D盘的2000的话,上边这个变量的执行结果就是打开 D:\WINNT 目录了。

    如何在cmd命令行中查看、修改、删除与添加,设置环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。
    永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方法目前没试验过),另一种是通过我的电脑-〉属性-高级,来设置系统的环境变量(查看详细)。

    其次,明确一下环境变量的作用。

    它是操作系统用来指定运行环境的一些参数。比如临时文件夹位置和系统文件夹位置等。当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,比如“Path”就是一个变量,里面存储了一些常用的命令所存放的目录路径。

    第三:什么情况下进行设置?

    当启动cmd命令行窗口调用某一命令的时候,经常会出现“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”,如果你的拼写没有错误,同时计算机中确实存在这个程序,那么出现这个提示就是你的path变量没有设置正确,因为你的path路径,也就是默认路径里没有你的程序,同时你有没有给出你程序的绝对路径(因为你只是输入了命令或程序的名称而已),这是操作系统不知道去哪儿找你的程序,就会提示这个问题。

    第四:如何修改?

    1、查看当前所有可用的环境变量:输入 set 即可查看。

    2、查看某个环境变量:输入 “set 变量名”即可,比如想查看path变量的值,即输入 set path

    3、修改环境变量 :输入 “set 变量名=变量内容”即可,比如将path设置为“d:\nmake.exe”,只要输入set path="d:\nmake.exe"。注意,此修改环境变量是指用现在的内容去覆盖以前的内容,并不是追加。比如当我设置了上面的path路径之后,如果我再重新输入set path="c",再次查看path路径的时候,其值为“c:”,而不是“d:\nmake.exe”;“c”。

    4、设置为空:如果想将某一变量设置为空,输入“set 变量名= ”即可。如“set path=” 那么查看path的时候就为空。注意,上面已经说了,只在当前命令行窗口起作用。因此查看path的时候不要去右击“我的电脑”——“属性”........

    5、给变量追加内容(不同于3,那个是覆盖):输入“set 变量名=%变量名%;变量内容”。如,为path添加一个新的路径,输入“ set path=%path%;d:\nmake.exe”即可将d:\nmake.exe添加到path中,再次执行"set path=%path%;c:",那么,使用set path语句来查看的时候,将会有:d:\nmake.exe;c:,而不是像第3步中的只有c:。


    附录:下面贴上一些常用的环境变量及作用

    %ALLUSERSPROFILE% 局部 返回所有“用户配置文件”的位置。

    %APPDATA% 局部 返回默认情况下应用程序存储数据的位置。

    %CD% 局部 返回当前目录字符串。

    %CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。

    %CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。

    %COMPUTERNAME% 系统 返回计算机的名称。

    %COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。

    %DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅Date。

    %ERRORLEVEL% 系统 返回最近使用过的命令的错误代码。通常用非零值表示错误。

    %HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。

    %HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。

    本文引用地址:http://blog.sciencenet.cn/blog-51026-566742.html

    我也一直不明白,以下两篇文章就能说明问题.
    --------------------------------------------------
    标题: 怎样用脚本来设置环境变量 
    我想编一个脚本程序,用来对一组环境变量进行设置或取消
    但由于脚本程序对变量的设置在退出脚本后就消失了,有没有间接办法能够实现这个功能? 
    你说的是 export ?
    在脚本中使用export, 好像只在脚本中有效,退出这个脚本,设置的变量就没有了
    在你的脚本中做设置
    在~/.profile 或 ~/.bashrc 等 用source运行    
    我试了一下,
    用source可以运行普通的shell脚本,也可达到设置环境变量的目的,
    想问一下source是什么命令?用man和info没有查到说明  
    source 是 bash 的内嵌命令,
    man bash
    /source filename \[arguments\]
    Thank u
    source filename
    or
    代码:
    . filename
    source 是 bash 的内嵌命令,
    man bash
    /source filename \[arguments\]
    source好像不一定是bash的‘内嵌命令’
    忘了是哪个发行版了
    source是外部命令
    $ type source
    source is a shell builtin
    哪个BT的发行版把 source 外部化了?忽忽。。
    --------------------------------------------------
    我自己也是一个菜鸟,接触linux没有多久,最近在学习BASH的export命令时碰到了一个难道(书
    上说export是将自定义变量变成系统环境变量):我在一个脚本文件中定义一个了变量,然后expor
    t变量,按照我自己的想法,执行完这个脚本后,在提示符下一定可以用echo显示出它的值,可结
    果却不是这样,脚本执行完后用set根本看不到有这个变量存在。为什么呢?我百思不得其解,最后
    将问题贴出来,一位前辈告诉我说用source+脚本文件就可以了,我试了一下果然可以,但一个新
    的问题又出来了。我将脚本中export命令删除后,用source一样可以。那这个export好像没有什么
    用呀。 
    在经过多次尝试后发现了一些东西,是我自己猜的,如果有什么不对的地方,请指正,谢谢。 
    执行一个脚本时,会先开启一个子 shell环境(不知道执行其它程序是不是这样),然后将父shell
    中的所有系统环境变量复制过来,这个脚本中的语句就在子shell中执行。(也就是说父shell的环境
    变量在子shell中可以调用,但反过来就不行,如果在子shell中定义了环境变量,只对该shell或者它
    的子shell有效,当该子shell结束时,也可以理解为脚本执行完时,变量消失。)为了证明这一点,
    请看脚本内容: 
    test='value' 
    export test 
    这样的脚本执行完后,test实际上是不存在的。接着看下面的: 
    test='value' 
    export test 
    bash 
    这里在脚本最后一行再开一个子shell,该shell应该是脚本文件所在shell的子shell,这个脚本执行完
    后,是可以看到test这个变量的,因为现在是处于它的子shell中,当用exit退出子shell后,test变量
    消失。 
    如果用source对脚本进行执行时,<b>如果不加export,就不会在子shell中看到这个变量</b>,因
    为它还不是一个系统环境变量呀,如脚本内容是: 
    test='value' 
    用 source执行后,在shell下是能看到这个变量,但再执行bash开一个子shell时,test是不会被复
    Page 1 of  怎样用脚本来设置环境变量
    2012-5-16 http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml制到子shell中的,因为执行脚本文件其实也是在一个子shell中运行,所以我再建另一个脚本文件执
    行时,是不会输入任何东西的,内容如:echo $test。所以这点特别注意了,明明在提示符下可以
    用echo $test输出变量值,为什么把它放进脚本文件就不行了呢? 
    所以得出的结论是:1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退
    出;2、一个shell中的系统环境变量才会被复制到子shell 中(用export定义的变量);3、一个shell
    中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell
    中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。 
    后来根据版主的提示,整理了一下贴子:为什么一个脚本直接执行和用source执行不一行呢?这也
    是我自己碰到的一个问题。manual原文是这样的:Read and execute commands from filename in
    the current shell environment and return the exit status of the last command executed from filena
    me.明白了为什么不一样了吧?直接执行一个脚本文件是在一个子shell中运行的,而source则是在
    当前shell环境中运行的。根据前面的内容,你也已经明白其中的道理了吧。 
    困扰了我几天的问题终于可以圆满的解决了。
    --------------------------------------------------
     
    不过还有一个问题,听说子shell的环境变量与父shell的也不完全一样,究竟差别是什么?
    source命令:
    source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初
    始化文件,使之立即生效,而不必注销并重新登录。
    用法: 
    source filename 或 . filename
    source命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长
    串的命令,如:
    make mrproper
    make menuconfig
    make dep
    make clean
    make bzImage
    …………
    如果把这些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会
    很方便,而用source命令就可以做到这一点,它的作用就是把一个文件的内容当成shell来执行,先
    在linux的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如 make_command,在其中输
    入一下内容:
    make mrproper &&
    make menuconfig &&
    make dep &&
    make clean &&
    make bzImage &&
    make modules &&
    make modules_install &&
    cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
    cp System.map /boot &&
    vi /etc/lilo.conf &&
    lilo -v
    文件建立好之后,每次编译核心的时候,只需要在/usr/src/linux-2.4.20下输入:
    source make_command
    即可,如果你用的不是lilo来引导系统,可以把最后两行去掉,配置自己的引导程序来引导内核。
    顺便补充一点,&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后
    才可以继续执行它后面的命令。
    ==============================================================
    1、引言
    Page 2 of  怎样用脚本来设置环境变量
    2012-5-16 http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml    在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“comman
    d not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐
    了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成
    部分。本文基于RedHat 9.0,详细讲解了环境变量定制的问题。
    2、变量简介
    Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每
    个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的
    运行环境进行定制,其方法就是修改相应的系统环境变量。
    3、定制环境变量
        环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是
    bash,但也可以重新设定或切换到其它的 Shell。根据发行版本的情况,bash有两个基本的系统级
    配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。
    前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,
    而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用
    户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,
    通过export来设置环境变量。下面通过几个实例来说明。

    3.1 使用命令echo显示环境变量
     
    #本例使用echo显示常见的变量HOME
    $ echo $HOME   
    /home/lqm
     
    3.2 设置一个新的环境变量 
     
    $ export HELLO=”Hello!”
    $ echo $HELLO
    Hello!
     
    3.3 使用env命令显示所有的环境变量
     
    $ env
    SSH_AGENT_PID=1875

    HOSTNAME=lqm
    SHELL=/bin/bash
    TERM=xterm
    HISTSIZE=1000
    ……
     
    3.4  使用set命令显示所有本地定义的Shell变量
     
    $ set
    BASH=/bin/bash
    ……
     
    3.5  使用unset命令来清除环境变量
     
    $ export TEST=”test”      #增加一个环境变量TEST
    $ env | grep TEST           #此命令有输出,证明环境变量TEST已经存在了
    TEST=test
    $ unset $TEST                #删除环境变量TEST
    $ env | grep TEST           #此命令无输出,证明环境变量TEST已经存在了
     
    3.6  使用readonly命令设置只读变量 
    如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
     
    $ export TEST="Test..."                                        #增加一个环境变量TEST
    $ readonly TEST                                                   #将环境变量TEST设为只读
    $ unset TEST                                                        #会发现此变量不能被删除
    -bash: unset: TEST: cannot unset: readonly variable

    $ TEST="New"                                                     #会发现此变量不能被修改
    -bash: TEST: readonly variable
     
    3.7  用C程序来访问和设置环境变量
    对于C程序的用户来说,可以使用下列三个函数来设置或访问一个环境变量。
    getenv()  访问一个环境变量。输入参数是需要访问的变量名字,返回值是一个字符串。如果所
    访问的环境变量不存在,则会返回NULL。
    setenv()  在程序里面设置某个环境变量的函数。
    unsetenv()  清除某个特定的环境变量的函数。
    另外,还有一个指针变量environ,它指向的是包含所有的环境变量的一个列表。下面的程序可
    以打印出当前运行环境里面的所有环境变量:
     
    #include <stdio.h>
    extern char**environ;
    int main ()
    {
    char**var;
    for (var =environ;*var !=NULL;++var)
    printf ("%s \n ",*var);
    return 0;
    }
     
    3.8      通过修改环境变量定义文件来修改环境变量
    需要注意的是,一般情况下,这仅仅对于普通用户适用,避免修改根用户的环境定义文件,因
    为那样可能会造成潜在的危险。
     
    $cd                                     #到用户根目录下
    $ls -a                                  #查看所有文件,包含隐藏的文件
    $vi .bash_profile                 #修改环境变量定义文件

     
    然后编辑你的PATH声明,其格式为:
    PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
    你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后,在用户下次登陆时生效,如
    果想立刻生效,则可执行下面的语句:$source .bash_profile
    需要注意的是,最好不要把当前路径”./”放到PATH里,这样可能会受到意想不到的攻击。完
    成后,可以通过$ echo $PATH查看当前的搜索路径。这样定制后,就可以避免频繁的启动位于shel
    l搜索的路径之外的程序了。
    4  总结
        通过以上的设置,你可以有一个比较方便有效的环境来提高你的
    http://www.360doc.com/content/12/0211/14/6828497_185770493.shtml

    1.2. 环境变量
    1.2.1. 如何从程序中获得/设置环境变量?

    获得一个环境变量可以通过调用‘getenv()’函数完成。

         #include <stdlib.h>
    
         char *getenv(const char *name);
          

    设置一个环境变量可以通过调用‘putenv()’函数完成。

         #include <stdlib.h>
    
         int putenv(char *string);
          

    变量string应该遵守"name=value"的格式。已经传递给putenv函数的字符串*不*能够被释放或变成无效,因为一个指向它的指针将由‘putenv()’保存。这意味着它必须是在静态数据区中或是从堆(heap)分配的。如果这个环境变量被另一个‘putenv()’的调用重新定义或删除,上述字符串可以被释放。

    /**************************译者增加***********************************

    因为putenv()有这样的局限,在使用中经常会导致一些错误,GNU libc 中还包括了两个BSD风格的函数:

    #include <stdlib.h>
    
    int setenv(const char *name, const char *value, int replace);
    void unsetenv(const char *name);
          

    setenv()/unsetenv()函数可以完成所有putenv()能做的事。setenv() 可以不受指针限制地向环境变量中添加新值,但传入参数不能为空(NULL)。当replace为0时,如果环境变量中已经有了name项,函数什么也不做(保留原项),否则原项被覆盖。 unsetenv()是用来把name项从环境变量中删除。注意:这两个函数只存在在BSD和GNU 库中,其他如SunOS系统中不包括它们,因此将会带来一些兼容问题。我们可以用 getenv()/putenv()来实现:

    int setenv(const char *name,  const char *value, int replace)
    {
       char *envstr;
    
       if (name == NULL || value == NULL)
          return 1;
       if (getenv(name) !=NULL)
         {
            envstr = (char *) malloc(strlen(name) + strlen(value) + 2);
            sprintf (envstr, "%s=%s", name, value);
            if (putenv(envstr));
               return 1;
         }
       return 0;
    } 
          

    **************************译者增加***********************************/

    记住环境变量是被继承的;每一个进程有一个不同的环境变量表拷贝(译者注:从core文件中我们可以看出这一点)。结果是,你不能从一个其他进程改变当前进程的环境变量,比如shell进程。

    假设你想得到环境变量‘TERM’的值,你需要使用下面的程序:

         char *envvar;
    
         envvar=getenv("TERM");
    
         printf("The value for the environment variable TERM is ");
         if(envvar)
         {
             printf("%s\n",envvar);
         }
         else
         {
             printf("not set.\n");
         }
          

    现在假设你想创建一个新的环境变量,变量名为‘MYVAR’,值为‘MYVAL’。以下是你将怎样做:

         static char envbuf[256];
    
         sprintf(envbuf,"MYVAR=%s","MYVAL");
    
         if(putenv(envbuf))
         {
             printf("Sorry, putenv() couldn't find the memory for %s\n",envbuf);
             /* Might exit() or something here if you can't live without it */
         }
          

    1.2.2. 我怎样读取整个环境变量表?

    如果你不知道确切你想要的环境变量的名字,那么‘getenv()’函数不是很有用。在这种情况下,你必须更深入了解环境变量表的存储方式。

    全局变量,‘char **envrion’,包含指向环境字符串指针数组的指针,每一个字符串的形式为‘“NAME=value”’(译者注:和putenv()中的“string”的格式相同)。这个数组以一个‘空’(NULL)指针标记结束。这里是一个打印当前环境变量列表的小程序(类似‘printenv’)。

         #include <stdio.h>
    
         extern char **environ;
    
         int main()
         {
             char **ep = environ;
             char *p;
             while ((p = *ep++))
                 printf("%s\n", p);
             return 0;
         }
          

    一般情况下,‘envrion’变量作为可选的第三个参数传递给‘main()’;就是说,上面的程序可以写成:

         #include <stdio.h>
    
         int main(int argc, char **argv, char **envp)
         {
             char *p;
             while ((p = *envp++))
                 printf("%s\n", p);
             return 0;
         }
          

    虽然这种方法被广泛的操纵系统所支持(译者注:包括DOS),这种方法事实上并没有被POSIX(译者注:POSIX: Portable Operating System Interace)标准所定义。(一般的,它也比较没用)

    http://www.linuxforum.net/books/upfaq/x124.htm

    怎样检索环境变量(environment variables)的值?


    ANSI C标准提供了一个名为getenv()的函数来完成这项任务。getenv()函数很简单一把指向要查找的环境串的指针传递给它,它就返回一个指向该变量值的指针。下面的程序说明了如何从C中获得环境变量PATH的值:
    # include <stdlib. h>
    main(int argc, char *  *  argv)
    {
        char envValue[l29];             / *  buffer to store PATH * /
        char *  envPtr = envValue ;     / *  pointer to this buffer  * /
        envPtr = getenv("PATH");        /*  get the PATH */
        printf ("PATH= %s\n" , envPtr) ;   / * print the PATH * /
    }
    如果你编译并运行了这个程序,你就会看到与在DOS提示符下输入PATH命令完全相同的结果。事实上,你可以用getenv()检索AUTOEXEC.BAT文件中的或者系统引导后在DOS揭示符下输入的所有环境变量的值。

    这里有一个小技巧。当运行Windows时,Windows设置了一个名为WINDIR的新的环境变量,它包含了Windows目录的路径全名。下面这段简单的程序用来检索这个串:
    # include <stdlib. h>
    main(int argc, char * *  argv)
    {
        char envValue[l29];
        char *  envPtr = envValue ;
       envPtr = getenv("windir");
        / * print the Windows directory * /
        printf("The Windows Directory is  %s\n" ,  envPtr);
    }
    这个程序还可以用来判断当前是否正在运行Windows,以及DOS程序是否运行在一个DOS shell下,而不是运行在“真正的"DOS下。注意,程序中的windir字符串是小写——这一点很重要,因为它对大小写是敏感的。如果你使用WINDIR,getenv()就会返回一个NULL串(表示变量未找到错误)。

    用一putenv()函数也可以设置环境变量。但要注意,该函数不是一个ANSI标准函数,在某些编译程序中它可能不以这个名字出现,或者根本就不存在。你可以用一putenv()函数做许多事情。实际上,在上面那个例子中,Windows正是用这个函数创建了windir环境变量。

    http://see.xidian.edu.cn/cpp/html/1641.html

    实例:在VC2008中设置运行临时环境变量

    In VS 2008 and VS 2005 at least, you can specify changes to environment variables in the project settings.

    Open your project. Go to Project>Properties... Under Configuration Properties>Debugging, edit the 'Environment' value to set environment variables.

    For example, if you want to add the directory "c:\foo\bin" to the path when debugging your app, set the 'Environment' value to"PATH=%PATH%;c:\foo\bin".

    Here's a screenshot of the setting s dialog:


    http://www.404qa.com/q-182.html

     参考网址:

    http://blog.csdn.net/lyl8470/article/details/6111765      visual studio 中的环境变量 

    http://tangzhongxin.blog.163.com/blog/static/89219612011888433810/ Visual Studio 2008 产生的临时文件,和 Windows 环境变量介绍   

    http://www.cnblogs.com/waterlin/archive/2011/10/31/2230341.html  Visual Studio 2008 环境变量的配置
    展开全文
  •   关于设置Windows环境变量的方法,可见笔者的另一篇博客:设置Windows环境变量的方法:https://blog.csdn.net/wangpaiblog/article/details/113532591   本文只是重点阐述Windows中环境变量Path的作用。   ...

    Windows 中的环境变量 Path 的作用

      关于设置 Windows 环境变量的方法,可见笔者的另一篇博客:设置Windows环境变量的方法:https://blog.csdn.net/wangpaiblog/article/details/113532591

      本文只是重点阐述 Windows 中环境变量 Path 的作用。

      简单地说,Windows 中的环境变量 Path 是用来指定可执行文件的绝对路径。

      可执行文件可以通过在 Windows 中的 CMD 来运行,但是在一般情况下,这需要输入该可执行文件的全路径。举个例子,如果你的谷歌浏览器的快捷方式的路径如下图所示,

      (注意,可执行文件并不仅限于.exe文件,它还可以是.bat.cmd等)

    在这里插入图片描述

      那么,在 CMD 中输入chrome.exe的全路径(可以省略chrome.exe的后缀.exe)就可以直接运行谷歌浏览器了,如下图所示:

    在这里插入图片描述

      如果在环境变量 Path 中设置了chrome.exe的上一级文件夹的路径(注意:是chrome.exe的上一级文件夹的路径,不是chrome.exe自身的全路径),实际上直接输入 chrome(可以省略chrome.exe的后缀.exe)就可以运行谷歌浏览器了,如下图所示:

      (注意:设置完环境变量之后,必须重启 CMD 才会在 CMD 中生效

    在这里插入图片描述

      (很早以前,有些外行人喜欢用这种方法来炫技,希望读者不要模仿,因为使用这种方式和直接双击快捷方式没有区别)

      这就是说,如果在在环境变量 Path 中设置了某路径,则运行该路径下的可执行文件时,可以直接输入该文件的无后缀名称来运行,这一点和相对哪个路径下启动 CMD 无关。这虽然对普通人没有什么大的用处,但对于编程开发人员来说就不是这样。因为如果在在环境变量 Path 中设置了某路径,那么无论在哪个工程目录下输入命令,该命令都可以被识别并且执行。

      反过来,如果想知道 CMD 中可输入的命令所对应的文件路径,可以使用命令 where,如:

    在这里插入图片描述

    展开全文
  • 从直接需求出发,我想在windows实现的是一个能够修改Java环境变量的脚本。要实现这个需求,实际上需要完成下面几点: - 可以在cmd的任何目录直接执行指令 - 接收参数,动态的修改环境变量的值 - 重启cmd能立即生效
  • 很多时候,不管我们在XP下还是在Vista、Win7、Win8下,不管我们是程序员还是普通用户,我们都可能会用到Windows系统环境变量。 可能有些初级用户比较迷惑,这个,对我们有什么用?该怎么用?今天列出Windows系统...
  • Windows】PATH环境变量的作用

    千次阅读 2015-10-13 13:22:31
    PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令path是告诉系统,当...
  • GO环境变量详解

    千次阅读 2019-11-26 13:33:30
    无论你是使用Windows,Linux还是Mac OS操作系统来开发Go应用程序,在安装好Go安装语言开发工具之后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建。 但对于一些初学者来说,可能不太...
  • windows环境里面开发项目,使用phpstudy集成环境开发,发现我执行composer laravel-wechat的命令行的时候,...但是你命令行执行一直提示你的版本太低,与composer 的版本不匹配,我就懵逼了,后来发现是环境变量的...
  • 浅谈环境变量

    千次阅读 多人点赞 2021-03-24 18:07:23
    环境变量 浅谈Linux下的环境变量前言一、环境变量是什么?二、使用步骤1.查看环境变量2.相关命令3.环境变量的组织方式总结 ...我们如何配置Windows环境变量 按步骤打开我们的环境变量后,新建——变量名为
  • 比如说你要执行 java 命令,你不设置环境变量path包括你的jdk安装路径,那系统去哪找你的java.exe文件。 如果执行某个命令,系统无法在当前文件夹里找到对应的.exe,那么系统...其他的环境变量也一样的用途,只不过
  • 环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的...
  • 环境变量path作用

    千次阅读 2019-01-30 17:20:33
    提供windows命令行中指令的可执行文件路径,当我们在命令行中键入指令时,根据环境变量中的path值,找到对应的指令可执行文件进行执行 举个例子:电脑上安装了tomcat,在cmd命令窗口执行startup.bat,会报如下错误 ...
  • 但是个人感觉还是比VC++强大,在各种嵌入式设备上用途很广。在window平台的图形编程用VC++,但是在嵌入式领域Qt独领风骚。  我个人感觉在window下装个Qt creator还是挺方便的,毕竟windows对其他软件的兼容性好。...
  • 环境变量

    千次阅读 2010-03-24 17:00:00
    环境变量相当于给系统或用户应用程序设置的一些参数, 具体起什么作用这当然和具体的环境变量相关. 比如path, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时, 系统除了在当前目录下面寻找此...
  • linux的bash环境变量

    千次阅读 2017-09-09 14:54:32
    一.环境变量简介 ... 环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。  用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 常见的环境变量:  PATH: 
  • 设置环境变量

    千次阅读 2017-03-23 10:50:21
    通过环境变量指定配置 设置环境变量 在Node.js中读取环境变量 通过配置文件指定配置 其他配置文件格式 JSON格式 YAML格式 根据运行环境选择不同的配置 使用单一配置文件名 通过环境变量指定文件名 使用confi
  • Linu学习笔记之——变量、环境变量

    千次阅读 2014-04-08 15:56:08
    摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令:export和source( . )。关键在于理清变量与其所在环境之间的关系。
  • 环境变量—Path

    千次阅读 2014-02-21 14:31:01
    在RationalRose安装过程中,出现第一个错误就是缺少“安装完以后提示找不到suiteobjects.dll”,而这个问题的解决方法就是通过修改或者添加相应的环境变量,那么什么是环境变量?Path环境变量又怎么解释?  Ø ...
  • 环境变量的作用,为什么要设置环境变量

    千次阅读 多人点赞 2017-03-01 15:49:07
    环境变量不是很了解,于是百度了一下,发现了一片不错的文章,从https://my.oschina.net/outcat/blog/490614转载,如下 我们平时打开一个应用程序,一般是双击桌面图标或在开始菜单链接,无论是桌面的快捷图标...
  • 如最常见的环境变量 —— PATH,它的用途就是当用户要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还要到PATH变量中指定的路径去寻找。用户可以通过设置PATH变量,来更...
  • 【Java知识点详解 10】为何要配置环境变量

    多人点赞 热门讨论 2021-08-01 09:27:45
    一、前言 干了这么多年Java,配置环境变量都是第一步要做的,但是为什么要配置环境变量呢,又有什么用呢,今天哪吒就带你一探...例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序
  • classpath和环境变量设置

    千次阅读 2012-10-11 20:14:48
    大多数的系统都有一些预先设置好的环境变量,当然,我们也可以增加自己的环境变量。为了看看当前系统的环境变量,我们可以用如下的命令:在Linux/Unix系统上,在shell命令符输入 env ,然后回车在Windows系统中,...
  • vs 属性 环境变量

    千次阅读 2019-06-28 17:24:40
    这个路径没成功:vs2008-工具-属性页-环境变量 可以在项目的“工具”“属性页”对话框中任何接受字符串的位置使用这些宏。这些宏不区分大小写。 关于如何自己定义环境变量详见我的另一文章:...
  • 在MinGW启动时激活环境变量

    千次阅读 2017-12-19 22:00:49
    熟悉Linux的都知道,在进入SHELL时,一共有四种方式添加环境变量与添加自定义命令,如下: 文件位置 用途 优先级 补充说明 /etc/profile 通用环境信息,首用户登录执行 1 会从/etc/profile.d目录件中搜集...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,873
精华内容 17,949
关键字:

windows的环境变量的用途