修复msysGit Portable $ HOME位置

dgw*_*dgw 20 git ssh msysgit portable-applications home-directory

我已经在我的闪存驱动器上成功安装并配置了msysGit Portable,并使用它来拉动和推送GitHub repos.但是,我似乎总是不得不克服SSH支持.

具体来说,为了让SSH找到我的密钥文件,每次运行git-bash.bat时,我都必须按照这些说明启动第二个实例,ssh-agent然后启动ssh-add我的密钥.

使用ssh -v git@github.com调试的输出我看到msysGit默认使用我的Windows用户目录来查找键.它不能那样做; 我需要它在便携式驱动器上查看自己的目录.

如何强制$ HOME成为程序自己的文件夹?

破坏Vox链接的更新

此页面中的说明与我最初发布的现已断开的链接类似.引用如下.这里也是原始Vox文章webarchive.

但是,如果你尝试这个并得到:

% ssh-add
Could not open a connection to your authentication agent. 
Run Code Online (Sandbox Code Playgroud)

然后你的会话没有在ssh-agent下运行.您可以通过运行以下命令在代理下重新启动新shell来解决此问题:

exec ssh-agent bash 
Run Code Online (Sandbox Code Playgroud)

在哪里可以用你选择的shell替换bash.执行此操作后,您应该能够运行ssh-add来加载该shell的密钥.

Von*_*onC 17

用于启动git bash的命令是:

C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
Run Code Online (Sandbox Code Playgroud)

我刚刚在DOS会话中尝试了以下内容:

C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
VonC@XXX /c/
$ echo $HOME
/c/Users/VonC
Run Code Online (Sandbox Code Playgroud)

默认情况下,$ HOME $%HOMEPATH%,但如果我强制%HOME%:

set HOME=/another/path
Run Code Online (Sandbox Code Playgroud)

然后启动相同的bash会话:

C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
VonC@XXX /c/
$ echo $HOME
/another/path
Run Code Online (Sandbox Code Playgroud)

因此,如果您通过将HOME设置为以下的脚本来包装bash调用:

  • %~dp0 :USB密钥包装器的路径
  • 或者%~d1\your\path:%~d1作为驱动器号(如果您的包装器在其上,则为您的USB密钥)

,你应该能够强迫HOME达到你需要的任何价值.


注意(2011年11月):从那时起,OP dgw编写了自己的包装器:

git-bash-portable.bat:

@echo off
rem Copyright (C): 2010 Voyagerfan5761
rem http://technobabbl.es/

set USERPROFILE=%~dp0
set HOMEDRIVE=%~d0
set HOMEPATH=%~p0
set HOME=%~dp0
set HISTFILE=%USERPROFILE%.bash_history
rem set BASHRC=%USERPROFILE%.bashrc

git-bash.bat
Run Code Online (Sandbox Code Playgroud)

文章" Portable Git for Windows:设置$HOME环境变量以允许完全可移植性(包括用于GitHub的SSL密钥和配置) "也添加了有用的信息.

但是,如果您在便携式驱动器上安装Git,您将希望您的设置随安装一起移动 - 显然,如果它在其他计算机上可能不存在的文件夹中查找它们,则显然不会.

因此,我们需要做的是告诉Portable Git将其自己文件夹中的特定位置视为主文件夹; 这样我们就可以在任何我们喜欢的地方复制整个Git文件夹,并且设置随之随身携带.