![堆叠 Windows 环境变量](https://linux22.com/image/1391170/%E5%A0%86%E5%8F%A0%20Windows%20%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
是否可以“堆叠”Windows 环境变量,例如,
"RUBY_PATH" = "C\ruby\bin"
"PYTHON_PATH" = "C:\python332"
"PROGRAMMING_PATH" = "%RUBY_PATH%;%PYTHON_PATH%"
"Path" = ...;%PROGRAMMING_PATH%'"
我可以在 Linux 节点上执行此操作,但到目前为止,在 Windows 节点上还没有成功。我做错了什么吗?
答案1
我不明白为什么不能,Windows 开箱即用:
我不能说我会经常使用它,因为有搞错路径的风险,而且它的界面不太友好。但看起来是可能的。
答案2
您可以从命令行轻松完成此操作:
SET RUBY_PATH=C:\Ruby\Bin
SET PYTHON_PATH=C:\Python332
SET PROGRAMMING_PATH=%RUBY_PATH%;%PYTHON_PATH%
SET PATH=%PATH%;%PROGRAMMING_PATH%
如果您直接在注册表中设置这些值,则需要使用REG_EXPAND_SZ需要扩展的数据类型。即包含其他变量的变量。
答案3
cmd
或批处理文件:
set
wmic
:
wmic ENVIRONMENT get Name, VariableValue, UserName | more
或者
wmic ENVIRONMENT get * | more
powershell
:
powershell gci env: | more
工作场所安全与健康:
ReadEnv2.vbs | more
读取环境2.vbs:
Set WshShell = CreateObject("WScript.Shell")
Set WshEnv = WshShell.Environment
WScript.Echo "WINDIR=" & WshEnv.Item("WINDIR") & vbCrLf &_
vbCrLf
Set WshShell = CreateObject("WScript.Shell")
WScript.Echo "Environment System:" & vbCrLf &_
"..............................................."
For Each IEnv In WshShell.Environment("System")
WScript.Echo IEnv
Next
WScript.Echo vbCrLf & "Environment User:" & vbCrLf &_
"..............................................."
For Each IEnv In WshShell.Environment("User")
WScript.Echo IEnv
Next
WScript.Echo vbCrLf & "Environment Volatile:" & vbCrLf &_
"..............................................."
For Each IEnv In WshShell.Environment("Volatile")
WScript.Echo IEnv
Next
WScript.Echo vbCrLf & "Environment Process:" & vbCrLf &_
"..............................................."
For Each IEnv In WshShell.Environment("Process")
WScript.Echo IEnv
Next
答案4
这似乎取决于您如何设置环境变量。在命令提示符中,您可以执行以下操作:
set a=C:
set b=%a%\Users
set c=%b%\Thomas
cd %c%
因为环境变量会立即扩展。
但你不能这么做:
set c=%b%\Thomas
set b=%a%\Users
set a=C:
cd %c%
另一方面,如果您通过环境变量对话框定义环境变量,然后启动命令提示符,它就会起作用。在 C# 程序中,当在该对话框中设置,然后通过以下方式查询时,它也起作用
string c = Environment.GetEnvironmentVariable("c");