在cygwin中刷新windows用户的环境变量

时间:2012-01-20 09:52:48

标签: path window cygwin environment-variables

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

'export VARNAME = VARVALLUE'不是一个选项,因为我需要转换导出的值,如果它是一个路径(类似UNIX的格式),但VARNAME可以是路径。

我想运行setx然后刷新环境,因此如果VARNAME是PATH,cygwin会执行相应的转换。

2 个答案:

答案 0 :(得分:3)

为了建立Apiman的答案,一般情况下你会发现HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment中的PATH,它包含系统PATH而不是用户的PATH。我还在下面做了一些修改。

在cygwin环境中运行此命令以通过更改var_name加载Windows系统PATH(或其他环境变量)

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

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

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

答案 1 :(得分:1)

上面添加了评论,但格式不佳。转发此处。

@ nilbus中的cut'答案对我不起作用。在我的Win7中,real Path之前有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-`")"