设置主目录
带有git-bash-portable.bat
包装器的解决方案会为我打开另一个位于后台的 Windows CMD 窗口。
另一个更原生的解决方案是在那里调整/etc/profile
和设置 HOME 变量。只需将以下行添加到您的虚拟/etc/profile
用户名的末尾:myuser
# end of /etc/profile
export HOME="/home/myuser"
cd
这将设置正确的 HOME 目录并将 cds 放入其中。然后启动机制,如加载所有文件/etc/profile.d
正常工作,你只需git-bash.exe
双击开始。
当然,您必须创建您的主目录才能使其正常工作。启动 git-bash 并创建它:
mkdir -p /home/myuser
启动或重新连接到代理
关于代理,通常必须在每次打开 git-bash shell 时重新加载它。获得跨越所有 git-bash 窗口的独立代理的解决方案是~/.mgssh
在启动中包含以下小脚本。它将代理环境变量存储agent.env
在目录中的文件中.ssh
。任何新的 shell 都会读取该文件,检查代理是否仍在运行并连接到它。如果它没有运行,它会启动代理并重写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
在移除棒之前杀死代理
通常,在您移除 U 盘之前,您会要求 Windows弹出U 盘,方法是在资源管理器中右键单击它或使用小系统托盘图标。如果您的代理仍在运行,这将不起作用。确保在移除棍子时关闭最后一个 shell 之前杀死代理:
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 8472 killed;
备注:通常你也可以eval $(ssh-agent -k)
用来取消设置环境变量,但是当你在关闭 shell 之前这样做时,它是无关紧要的。上面的启动脚本.mgssh
负责清理~/.ssh/agent.env
文件,因此也不必这样做。