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

Posted

技术标签:

【中文标题】git 将系统配置文件视为主目录而不是用户主文件夹(Windows 7)【英文标题】:git sees the system profile as home instead of the user home folder (Windows 7) 【发布时间】:2012-08-03 16:49:00 【问题描述】:

我是 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- 但我认为从系统文件夹重定向到用户文件夹不是一个好主意,特别是如果另一个用户有同样的问题。其他类似的答案似乎为解决方案做一个符号链接或类似的。但我还没有找到涉及系统配置文件的。

我也考虑过将快捷​​方式属性“Start In:”从 %HOME% 更改为 %USERPROFILE%,但 ~ 似乎仍然解析为 %HOME%

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

【问题讨论】:

【参考方案1】:

只需更改 %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 命令不会增加任何价值,只会造成混乱。

【讨论】:

遇到了类似的问题,我无法再在配置文件中找到该行 - 要么是我的安装损坏了,要么它可能已经移动。 感谢@RickMoritz 指出这一点。我已经更新了我的答案。 我安装了 Windows creators 更新并且 %HOME% 停止正确解析。我通过为我的用户显式设置 HOME=%USERPROFILE% 来修复它。【参考方案2】:

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

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

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

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

【讨论】:

以上是关于git 将系统配置文件视为主目录而不是用户主文件夹(Windows 7)的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 hdfs 用户的 HDFS 用户主目录?

linux如何修改用户主目录

Linux目录结构及快捷键

-bash-4.1$ 的解决方法

Debian打包:将文件部署到用户主目录

各个目录说明