我想在执行setx VARNAME VARVALUE(特别是路径)后刷新cygwins环境。
'export VARNAME = VARVALLUE'不是一个选项,因为我需要转换导出的值,如果它是一个路径(类似UNIX的格式),但VARNAME可以是路径。
我想运行setx然后刷新环境,因此如果VARNAME是PATH,cygwin会执行相应的转换。
答案 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-`")"