Установка домашнего каталога
Решение с оболочкой git-bash-portable.bat
открывает для меня еще одно окно Windows CMD, которое остается в фоновом режиме.
Другое, более родное решение - настроить /etc/profile
и установите там HOME var.Просто добавьте следующие строки в конец /etc/profile
, myuser
beeing ваше виртуальное имя пользователя:
# end of /etc/profile
export HOME="/home/myuser"
cd
Это устанавливает правильный каталог HOME и компакт-диски в него.Тогда механизм запуска, такой как загрузка всех файлов из /etc/profile.d
, работает правильно, и вы просто запускаете git-bash.exe
двойным щелчком мыши.
Конечно, вы должны создать свой домашний каталог, чтобы это работало.Запустите git-bash и создайте его:
mkdir -p /home/myuser
Запуск или повторное подключение к агенту
Что касается агента, его обычно нужно перезагружать при каждой открытой оболочке git-bash.Решение получить независимого агента, охватывающего все окна git-bash, состоит в том, чтобы включить в запуск следующий небольшой скрипт ~/.mgssh
.Он хранит данные агента в файле agent.env
в каталоге .ssh
.Любая новая оболочка читает файл, проверяет, все ли еще работает агент, и подключается к нему.Если он не запущен, он запускает агент и перезаписывает файл agent.env
.Убедитесь, что ваш .ssh
dir существует.
# 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 извлечь флешку, щелкнув ее правой кнопкой в проводнике.или используя маленькую иконку систрей.Это не будет работать, если ваш агент все еще работает.Обязательно убивайте агента перед закрытием последней оболочки при удалении флешки:
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 8472 killed;
Примечание: Обычно вы бы также использовали eval $(ssh-agent -k)
для сброса переменных env, но, как вы делаете это непосредственно перед закрытиемОболочка это не имеет значения.Приведенный выше стартовый скрипт .mgssh
позаботится о том, чтобы очистить файл ~/.ssh/agent.env
, так что это не нужно делать.