Fix Msysgit Portable $ Домашнее местоположение
-
27-09-2019 - |
Вопрос
Я успешно установил и настроил MSYSGIT Portable на мою флэш-накопитель и использовал его, чтобы потянуть и нажать REPOS GitHUB. Однако, кажется, я всегда должен кловить поддержку SSH.
В частности, для SSH находить мои ключевые файлы, я должен следовать Эти инструкции начать второй экземпляр ssh-agent
а потом ssh-add
Мой ключ каждый раз, когда я бегу Git-Bash.bat.
Использование вывода ssh -v git@github.com
Для отладки я вижу, что MSYSGIT по умолчанию для моего каталога пользователя Windows для поиска ключей. Это не может этого сделать; Мне нужно, чтобы посмотреть в свой каталог на портативный диск.
Как я могу заставить $ домой быть собственной папкой программы?
Обновление для сломанной ссылки Vox
Инструкции от эта страница похожи на сейчас, сломанную ссылку, которую я изначально опубликовал. Цитируется ниже. Также вот WebArchive оригинальной статьи VOX.
Однако, если вы попробуете это и получите:
% ssh-add Could not open a connection to your authentication agent.
Тогда ваша сессия не работает под SSH-Agent. Вы можете обойти это, перезагружая новую оболочку под агентом, запустив:
exec ssh-agent bash
Где вы можете заменить Bash с оболочкой по вашему выбору. Как только вы сделаете это, вы должны иметь возможность запускать SSH-add, чтобы загрузить ключ для этой оболочки.
Решение
Команда, используемая для запуска Git Bash:
C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
Я просто попробовал в сеансе 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
По умолчанию $ Home $% Pormathate%, но если я заставляю% домой%:
set HOME=/another/path
а затем запустить ту же баш сеанс:
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
Так что, если вы оберните вызов Bash через скрипт, установив дом, чтобы:
%~dp0
: путь обертки на вашем клавише USB- или
%~d1\your\path
: с%~d1
Быть буквой диска (вашего USB-ключа, если на нем находится ваша обертка)
, вы должны быть в состоянии заставить дом на любой нужный вам ценность.
Примечание (ноябрь 2011): с тех пор, 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
Статья "Портативный Git для Windows: установка $HOME
Переменная среды для обеспечения полной портативности (включая клавиши SSL и конфигурацию для использования с GitHub)«Также добавьте полезную информацию.
Однако, если вы устанавливаете GIT на портативный диск, вы хотите, чтобы ваши настройки путешествовать с установкой, которые, очевидно, они не будут, если она ищет их в папке, которая может не существовать на других компьютерах.
Итак, что нам нужно сделать, это сказать портативное GIT для обработки определенного местоположения в его собственной папке в качестве домашней папки; Таким образом, мы можем скопировать всю папку GIT в любом месте, где нам нравится, и настройки будут ездить с ним.
Другие советы
Установка дома
Решение с git-bash-portable.bat
Обелка открывает другое окно CMD Windows для меня, которое остается на заднем плане.
Другое, более нативное решение - это настроить /etc/profile
и установить домашний вар. Просто добавьте следующие строки до конца /etc/profile
, myuser
Пчела твой виртуальный имя пользователя:
# end of /etc/profile
export HOME="/home/myuser"
cd
Это устанавливает правильный домашний каталог и CDS в него. Затем механизм запуска, как загрузка всех файлов из /etc/profile.d
работает правильно, и вы просто начнете git-bash.exe
с дублекликом.
Конечно, вы должны создать свой домашний каталог для этого на работу. Начните Git-bash и создайте его:
mkdir -p /home/myuser
Запуск или переподключение к агенту
Что касается агента, он обычно должен быть перезагружен с каждым открытым оболочкой Git-Bash. Решение для получения независимого агента, охватывающего все окна Git-Bash - включить следующий маленький скрипт ~/.mgssh
в стартапе. Он хранит агент ENV vars в файле agent.env
в .ssh
каталог. Любая новая оболочка читает файл, проверяет, если агент все еще работает и подключается к нему. Если он не работает, он запускает агент и переписывает agent.env
файл. Убедитесь, что вы .ssh
Дир существует.
# cat ~/.mgssh
agentfile=~/.ssh/agent.env
agent_load_env()
{
test -f "$agentfile" && . "$agentfile" >| /dev/null;
}
agent_start()
{
(umask 077; ssh-agent >| "$agentfile")
. "$agentfile" >| /dev/null;
}
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
fi
# uncomment this, if you want to add a key on agent startup
#if [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
# ssh-add
#fi
unset agentfile
Теперь источник .mgssh
Сценарий в вашем .bashrc
:
# cat .bashrc
. ~/.mgssh
# ... more .bashrc content
Нашел это на Github:
https://help.github.com/articles/working-with-ssh-key-passphrases/#platform-windows.
Убив агента перед удалением палки
Обычно, прежде чем удалить свой USBSTICK, вы просите Windows извлекать Палка, щелкнув правой кнопкой мыши в проводнике или используя маленький значок Systray. Это не будет работать, если ваш агент все еще работает и работает. Обязательно убить агента перед закрытием последней оболочки при удалении палки:
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 8472 killed;
Примечание: обычно вы бы использовали eval $(ssh-agent -k)
Чтобы не отделить ENV vars, но, как вы делаете это, прежде чем закрывать оболочку, это не имеет значения. Вышеупомянутый сценарий запуска .mgssh
заботится о уборке ~/.ssh/agent.env
Файл, так что не нужно делать.