【发布时间】:2014-07-26 22:49:05
【问题描述】:
实际问题
我如何“重定向”(符号链接?)或临时更改 %HOMEDRIVE% 和 %HOMEPATH% 的值(可能基于两个批处理脚本,当我开始在机器上工作时更改值并在我完成后重置所有内容完成了)?
背景
许多 Windows 程序选择系统变量 %USERPROFILE% 或 %HOMEDRIVE% 和 %HOMEPATH 的组合,以便确定用户需要使用的“主”目录在哪里(例如 C:\Users\JohnDoe )。作为 portable apps 哲学的粉丝(见底部我的意思),我想知道我是否可以以某种方式使我的主目录可移植,即让它指向一个目录便携式设备。或者,换句话说,我想让它“动态可变”。
我尝试了什么
找出当前变量值是什么:
C:\Users\JohnDoe> Set HOME
HOMEDRIVE=C:
HOMEPATH=\Users\<username>
设置它们:
C:\Users\JohnDoe> Setx HOMEDRIVE "d:"
C:\Users\JohnDoe> Setx HOMEPATH "\home"
这会将HOMEDIR 和HOMEPATH 创建为用户特定的环境变量(请参阅控制面板>> 系统>> 环境变量)。但是“全球性的”并没有改变,例如RStudio 将无法识别用户特定的变量(仍会写入 C:\Users\JohnDoes\[...])。
C:\Users\JohnDoe> Set HOME
HOMEDRIVE=C:
HOMEPATH=\Users\<username>
便携式应用程序
例如,请参阅 PortableApps.com 或简单地认为“只是安装到便携式设备而不是 C:\Program Files\<app-name> 的软件”。对于那些不关心%HOMEDRIVE% 和%HOMEPATH%(例如Eclipse 或R)的程序,后者对我来说是一种享受。
其他一些(例如Git)只需要稍微调整一下(例如参见this post)。
还有一些其他的(例如RStudio)实际上在便携式设备上运行平稳,但将内容写入用户的“主”目录。这就是我想告诉我在我的便携式设备上使用目录的软件。
【问题讨论】:
-
您可以使用
set更改当前命令shell 的环境变量并从该shell 启动应用程序。但当然,这只有在应用程序实际查看环境变量时才有效(它不应该,但有些人会这样做)。 -
好的,谢谢!这可能至少是一种选择。
标签: windows cmd environment-variables portability home-directory