使用脚本设置全局环境变量

使用脚本设置全局环境变量

      最近发现有不少人在讨论使用脚本如何设置系统全局长期有效的环境变量的问题,正巧最近也用到了这方面的内容,所以将大家的讨论内容做了一些收集整理,遂成此文。

1、内部工具:regedit /s、echo >> & regedit /s、reg add
2、外部工具:setx、setntenvar、winset
3、其他脚本:vbs
4、自动批处理:autoexec.bat、autoexec.nt

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

1、内部工具:regedit /s、echo >> & regedit /s、reg add

1.1 regedit /s - Windows自带工具

优点:在所有Windows系统下均可使用,可同时操作其他注册表项
缺点:不可动态定义变量,需要重启才能生效,需读取额外的注册表文件

:: dsc.reg 已经存在并可用
REGEDIT /S DSC.REG

1.2 echo >> & regedit /s - Windows自带命令和工具

优点:可动态定义变量,在所有Windows系统下均可使用,可同时操作其他注册表项
缺点:需要重启才能生效,需读写额外的注册表文件

:: dsc.reg 已经存在并可用,修改环境变量Driver为cd变量转化值
ECHO "Driver"="%cd:\=\\%\\sqora32.dll">>DSC.REG
REGEDIT /S DSC.REG

1.3 reg add - Windows 2K/XP/03自带工具

优点:可动态定义变量
缺点:需要重启才能生效,缺省不能在9X下使用

SET ENV_POOL=HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment
REG ADD "%ENV_POOL%" /V PATH /T REG_SZ /D "%cd%;%Path%" /F >nul

2、外部工具:setx、setntenvar、winset

2.1 setx - 来自 2K/XP/03 安装光盘的支持工具包

Version 1.0a (5/31/96)
Gary Milne - Microsoft MCS

优点:可动态定义变量,不需重启立即生效,可动态引用变量,可引用文本内容设置变量
缺点:只能在NTs下使用,不能删除变量而只能置为空值

:: 设置当前用户全局变量
SETX MACHINE COMPAQ
:: 设置系统全局变量
SETX MACHINE "COMPAQ COMPUTER" -m
:: 静态引用其他环境变量(仅引用一次当前会话环境变量)
SETX MYPATH %PATH%
:: 动态引用其他环境变量(总是引用全局环境变量)
SETX MYPATH ~PATH~
:: 使用注册表值设置环境变量
SETX BUILD -k "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber"
:: 使用文件中指定内容设置环境变量(不会立即生效)
SETX IPGATEWAY -f ipconfig.out -r 0,7 "Gateway"

2.2 setntenvar - 来自无忧启动论坛(topic=4197) Lx1638(老九)

SetNTEnVar V06.04

优点:可动态定义变量,可定义光驱盘符为环境变量,不需重启立即生效
缺点:只能在NTs下使用

:: 修改变量
SETNTENVAR PATH=%PATH_BAK%
:: 删除变量
SETNTENVAR BAK_PATH=
:: 定义光驱盘符为环境变量CDROM\CDROM0\CDROM1等
SETNTENVAR /FindCDROM

2.3 winset - 来自9x安装盘支持工具包

优点:可动态定义变量,不需重启立即生效
缺点:只能在9X下使用,在NTs下运行出错

:: 修改变量
WINSET PATH=%PATH_BAK%
:: 删除变量
WINSET BAK_PATH=

3、其他脚本:vbs

3.1 vbs - 来自中国DOS联盟论坛(tid=27952) electronixtar

set sysenv=CreateObject("WScript.Shell").Environment("system") '系统环境变量的数组对象
sysenv.Remove("ztest2")                        '删除变量
sysenv("ztest3")="test value"                '添加变量

优点:可动态定义变量,不需重启立即生效
缺点:需要修改系统配置文件,仅对使用command创建的命令行有效

4、自动批处理:autoexec.bat、autoexec.nt

4.1 autoexec.bat - 来自系统盘根目录

优点:可动态定义变量,可在DOS/Windows全系列系统下使用
缺点:需要重启才能生效,需要修改系统文件

echo set path=d:\batch;%path%>> c:\autoexec.bat

在2K/XP/03中是否解析autoexec.bat中的变量与以下注册表项相关

User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
Value Name: ParseAutoexec
Data Type: REG_SZ (String Value)
Value Data: (0 = disabled, 1 = enabled)

4.2 autoexec.nt - 来自2K/XP/03系统的%SystemRoot%\system32

优点:可动态定义变量,不需重启立即生效
缺点:需要修改系统文件,仅对2K/XP/03中使用autoexec.nt文件的命令行有效

echo set path=d:\batch;%path%>> %SystemRoot%\System32\autoexec.nt

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

      总体而言,系统环境变量在NT系列的注册表下有两个地方:

1、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
代表系统环境变量空间的注册表项

2、HKEY_CURRENT_USER\Environment
代表当前用户环境变量空间的注册表项

      这两个键支下的注册表值分别表示相应的环境变量,直接修改系统空间的变量需要重启才会再全局生效,在用户空间修改的只要注销就可以了。

      另外需要注意的是,使用以上方法设置的系统变量,都是无法在批处理或命令行运行的当前会话(窗口)中生效的,所以如果在设置变量后即刻去查询,是不会发生变化的。

      解决这个问题的最简单办法是设置系统级变量的同时,使用set设置会话级变量为相同的内容。另外,也可以使用reg query或regedit /e或者setx -k查询相应的注册表值。

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

关于autoexec.nt文件的问题

      配置文件是否生效与文件名无关,只有且只要它能被命令行程序正确引用时才生效。

      引用配置文件的方法,新建快捷方式,在项目中填写command,按确定后生成程序信息文件(.pif)"MS-DOS 方式",在“属性->程序->高级”中定义初始化文件

      但是因为command.com总是使用%SystemRoot%\_default.pif作为程序信息文件,而_default.pif定义了auotexec.nt和config.nt作为初始化配置文件,所以使用command.com打开命令行,总是能成功引用autoexec.nt中设置的环境变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux系统中,要设置全局环境变量,需要按照以下步骤操作: 1. 打开终端,进入当前用户的家目录(可以通过输入cd ~ 命令实现)。 2. 打开.bashrc文件(如果不存在该文件,则新建一个),输入需要设置环境变量,例如:export PATH=$PATH:/usr/local/bin。 3. 保存并关闭.bashrc文件。 4. 输入source ~/.bashrc 命令,使设置环境变量生效。 5. 验证环境变量是否已经生效,可以通过输入echo $PATH 命令查看环境变量的值。 注意,以上操作设置的是当前用户的全局环境变量,如果需要设置系统级别的全局环境变量,需要编辑/etc/profile文件,并执行source /etc/profile 命令使其生效。 ### 回答2: 在Linux系统中,可以通过以下步骤来设置全局环境变量: 1. 打开终端,使用root权限登录系统。 2. 打开 `/etc/environment` 文件,可以使用任何编辑器打开该文件,比如使用vi编辑器命令 `vi /etc/environment`。 3. 在文件内部,添加变量的行,每行按照 “变量名=值”的格式编写,例如 `JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64`。 4. 保存文件并退出编辑器。 5. 执行以下命令使更改立即生效:`source /etc/environment`。 6. 确认是否设置成功,可以使用命令 `printenv 变量名` 来显示环境变量的值,例如 `printenv JAVA_HOME`。 7. 如果需要删除变量,只需要编辑 `/etc/environment` 文件,将相应的行删除,并执行 `source /etc/environment` 命令使更改生效。 请注意,这些设置将应用于所有用户和所有会话,所以请小心设置全局环境变量,以免影响系统运行稳定性。 ### 回答3: 在Linux系统中设置全局环境变量可以通过修改系统的配置文件来实现。下面是设置全局环境变量的步骤: 1. 打开终端,并以超级用户身份登录(使用sudo命令)。 2. 确认系统使用的shell类型,可以使用以下命令来查看: ``` echo $SHELL ``` 输出结果通常是/bin/bash或/bin/sh,根据实际结果进行下一步操作。 3. 打开/etc/profile文件,这是一个系统级别的profile文件,该文件中的环境变量对所有用户都起作用。使用任意文本编辑器打开该文件: ``` sudo vi /etc/profile ``` 4. 在文件末尾添加要设置环境变量,例如: ``` export MY_VARIABLE=/path/to/my/directory ``` 5. 保存并退出编辑器。 6. 重新加载配置文件,以使修改后的环境变量生效: ``` source /etc/profile ``` 7. 检查环境变量是否已成功设置: ``` echo $MY_VARIABLE ``` 如果输出等于/path/to/my/directory,则说明环境变量设置成功。 注意:以上步骤修改的是系统级别的环境变量,在用户登录后启动的所有终端中都生效,但不会立即生效。如果只想让特定用户生效,可以修改该用户的.profile文件。 如果是其他shell类型,如csh或ksh,需要修改对应的配置文件,如/etc/csh.login或/etc/profile.d/目录中的脚本文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值