Вопрос

Я успешно установил и настроил 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 Файл, так что не нужно делать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top