Path 刷新windows用户';cygwin中的s环境变量

Path 刷新windows用户';cygwin中的s环境变量,path,window,cygwin,environment-variables,Path,Window,Cygwin,Environment Variables,我想在执行setx VARNAME VARVALUE(特别是路径)之后刷新cygwins环境 “export VARNAME=VARVALLUE”不是一个选项,因为如果导出的值是路径(到类UNIX格式),我需要将其转换为路径,但VARNAME可以是路径,也可以不是路径 我希望运行setx,然后刷新环境,以便cygwin在VARNAME为PATH时执行相应的转换。根据Apiman的回答,通常您会在HKLM\SYSTEM\CurrentControlSet\Control\Session Manag

我想在执行setx VARNAME VARVALUE(特别是路径)之后刷新cygwins环境

“export VARNAME=VARVALLUE”不是一个选项,因为如果导出的值是路径(到类UNIX格式),我需要将其转换为路径,但VARNAME可以是路径,也可以不是路径


我希望运行setx,然后刷新环境,以便cygwin在VARNAME为PATH时执行相应的转换。

根据Apiman的回答,通常您会在
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\environment
中找到路径,其中包含系统路径而不是用户路径。下面我也做了一些更正

在cygwin环境中运行此命令以加载Windows系统路径(或通过更改var_名称加载其他环境变量)

当然,在上面的代码中,windows路径将替换本地路径,使您无法访问cygwin/bin和其他路径。相反,您可能希望将Windows路径附加到cygwin路径:

export PATH="$PATH:$(cygpath -pu "`reg query 'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' /v PATH| grep PATH | cut -c23-`")"

上面添加了注释,但格式不好。在这里转载

@nilbus'答案中的
cut
对我不起作用。在我的Win7中,
实际路径
前有30个字符。我用这个来代替

export PATH="$PATH:$(cygpath -pu "`reg query \
 'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' \
 /v PATH|grep PATH|sed 's| \+| |g'|cut -d" " -f4-`")"

最后我使用了:export${var_name}=“
reg query HKCU\\Environment/v${var_name}grep${var_name}cut-c23-| cygpath-pu
”;它不干净,但在大多数情况下都有效。如果VARVALUE不是路径,cygpath将保持它不变,除非它看起来像一条路径,但不应更改,在这种情况下,它会弄乱所有内容,但这不是常见的情况
剪切
对我不起作用。在我的Win7中,
实际路径
前有30个字符。我改为使用这个
export PATH=“$PATH:$(cygpath-pu”`reg query'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment'/v PATH | grep PATH | sed's | \+| g'| cut-d”“-f4-`”)
export PATH="$PATH:$(cygpath -pu "`reg query \
 'HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' \
 /v PATH|grep PATH|sed 's| \+| |g'|cut -d" " -f4-`")"