git将系统配置文件视为主页而不是用户主文件夹(Windows 7)

时间:2012-08-06 17:21:29

标签: git windows-7 ssh cmd bitbucket

我是git的新手并且正在关注this bitbucket tutorial进行初始设置。在git bash窗口中,它显示为brnt @ brntslaptop,但如果我输入:

$ ls -a ~/.ssh
ls: /c/windows/system32/config/systemprofile/.ssh: No such file or directory.

我认为这与我作为管理员或禁用UAC有关,但我不确定最佳的继续方式。

This answer is similar - 但我不认为从系统文件夹重定向到用户文件夹是个好主意,特别是如果其他用户遇到同样的问题。其他类似的答案似乎做了一个符号链接或类似的解决方案。但我没有找到涉及系统配置文件的那个。

我还考虑过将快捷​​方式属性“开始于:”从%HOME%更改为%USERPROFILE%,但〜似乎仍然解析为%HOME%

这种行为是正常的吗?使“〜”或%HOME%解析到我的用户目录的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

只需更改%HOME%(或实际为$ HOME,因为%HOME%很可能根本没有设置) 默认情况下,<git-install-dir>\etc\profile将$ HOME设置为%HOMEDRIVE %% HOMEPATH%(如果已设置并指向现有目录),否则设置为%USERPROFILE%。

因此,您可以编辑该文件,找到该行

HOME="$HOMEDRIVE$HOMEPATH"

并删除它或在其前面添加#以强制使用%USERPROFILE%。

或者在此块之后的任何位置添加一行,明确地将HOME设置为您想要的内容。

修改
在较新版本的git中,该行可能不再存在。 我在etc\profile的最顶部添加了以下内容(这是非常具体和丑陋的,但它确实有效):

#homefix start
HOME=/c/Users/myusername/
HISTFILE=$HOME/.bash_history
export LANG=en_US
# normalize HOME to unix path
export HOME="$(cd "$HOME" ; pwd)"
#homefix end

可以忽略export LANG...行。我有它在git gui和gitk中的菜单和按钮中获取英文文本,因为IMO翻译git命令不会增加任何价值,只会产生混淆。

答案 1 :(得分:0)

我来到这里是为了寻找一个原因,为什么在同一台 Windows 机器上,一个用户可以从 PowerShell 命令行使用 git config --list --global,而另一个用户却不能。

基本上在PowerShell中设置了一个指向正确位置的变量$HOME;但是,这不是 git 正在寻找的变量,它希望设置 $env:HOME

为了解决这个问题,我们对无法列出全局设置的用户运行了以下 PowerShell 命令:

[System.Environment]::SetEnvironmentVariable('HOME',$env:USERPROFILE,'User')