Fix msysGit Portable $HOME location
git, home-directory, msysgit, portable-applications, ssh
Solution
The command used to launch git bash is:
C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
I just tried the following in a DOS session:
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
By default, $HOME$%HOMEPATH%, but if I force %HOME%:
set HOME=/another/path
and then launch the same bash session:
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
So if you wrap the bash call by a script setting the HOME to:
- `%~dp0` : the path of the wrapper on your USB key
- or `%~d1\your\path`: with `%~d1` being the drive letter (of your usb key if your wrapper is on it)
, you should be able to force HOME to whatever value you need.
Note (November 2011): since then, the OP dgw has written his own wrapper:
`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
The article "Portable Git for Windows: setting the `$HOME` environment variable to allow complete portability (including SSL keys and configuration for use with GitHub)" also add useful information.
However, if you install Git on a portable drive, you'll want your settings to travel with the installation—which obviously they won't if it is looking for them in a folder which may not exist on other computers.
So, what we need to do is tell Portable Git to treat a specific location within its own folder as the home folder; that way we can copy the whole Git folder anywhere we like and the settings will travel with it.
Problem
I have successfully installed and configured msysGit Portable on my flash drive, and have used it to pull and push GitHub repos. However, I seem to always have to kludge the SSH support. Specifically, in order for SSH to find my key files, I have to follow these instructions to start a second instance of `ssh-agent` and then `ssh-add` my key every time I run git-bash.bat. Using the output of `ssh -v git@github.com` to debug I see that msysGit defaults to my Windows user directory to look for keys. It can't do that; I need it to look in its own directory on the portable drive. How can I force $HOME to be the program's own folder? Update for broken Vox link Instructions from this page are similar to the now-broken link I originally posted. Quoted below. Also here's the webarchive of original Vox article. However, if you try this and get: ``` % ssh-add Could not open a connection to your authentication agent. ``` then your session is not running under the ssh-agent. You can get around this by restarting a new shell under the agent by running: ``` exec ssh-agent bash ``` where you can replace bash with the shell of your choice. Once you do this, you should be able to run ssh-add to load your key for that shell.