MSYSGITポータブル$ホームロケーションを修正します
-
27-09-2019 - |
質問
フラッシュドライブにMSySgitポータブルを正常にインストールして構成し、それを使用してGitHubリポジトリをプルしてプッシュしました。しかし、私は常にSSHのサポートをKludgeしなければならないようです。
具体的には、SSHが私のキーファイルを見つけるためには、私は従わなければなりません これらの指示 の2番目のインスタンスを開始します ssh-agent
その後 ssh-add
git-bash.batを実行するたびに私のキー。
の出力を使用します ssh -v git@github.com
デバッグするには、MSYSGITがデフォルトでWindowsユーザーディレクトリがキーを探すために表示されることがわかります。それはできません。ポータブルドライブの独自のディレクトリを見る必要があります。
$ Homeをプログラム独自のフォルダーに強制するにはどうすればよいですか?
壊れたVoxリンクの更新
からの指示 このページ 私が最初に投稿した今や壊れたリンクに似ています。以下に引用。また、ここにあります オリジナル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 $%homepath%ですが、%home%を強制する場合:
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
したがって、スクリプトでバッシュコールをラップした場合、家を次のように設定します。
%~dp0
:USBキーのラッパーのパス- また
%~d1\your\path
: : と%~d1
ドライブレターであること(ラッパーが載っている場合はUSBキーの)
, 、必要な価値を強制することができるはずです。
メモ(2011年11月):それ以来、 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
記事 "Windows用のポータブルGit:設定 $HOME
環境変数は、完全な移植性(GitHubで使用するSSLキーと構成を含む)を可能にします「有用な情報も追加します。
ただし、ポータブルドライブにgitをインストールする場合、設定をインストールで移動する必要があります。これは、他のコンピューターに存在しないフォルダーで探している場合は明らかにそうではありません。
したがって、私たちがする必要があるのは、ポータブルGitに、独自のフォルダー内の特定の場所をホームフォルダーとして扱うように指示することです。そうすれば、gitフォルダー全体を好きな場所にコピーでき、設定はそれと一緒に移動します。
他のヒント
ホームディレットを設定します
aでの解決策 git-bash-portable.bat
ラッパーは、バックグラウンドにとどまる別のWindows CMDウィンドウを開きます。
もう1つのよりネイティブソリューションは、調整することです /etc/profile
そして、そこに家のvarを設定します。次の行を最後に追加するだけです /etc/profile
, myuser
あなたの蜂の巣 バーチャル ユーザー名:
# end of /etc/profile
export HOME="/home/myuser"
cd
これにより、適切なホームディレクトリとCDSが設定されます。次に、すべてのファイルをからのロードするなど、スタートアップメカニズム /etc/profile.d
正しく機能し、開始します git-bash.exe
doubleclickで。
もちろん、これが機能するにはホームディレクトリを作成する必要があります。 Git-Bashを開始して作成します。
mkdir -p /home/myuser
エージェントへの開始または再接続
エージェントに関しては、通常、開いたすべてのgitバッシュシェルで再ロードする必要があります。すべてのgitバッシュウィンドウにまたがる独立したエージェントを取得するためのソリューションは、次の小さなスクリプトを含めることです ~/.mgssh
スタートアップで。エージェントenv varsをファイルに保存します 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に尋ねます 排出します スティックは、エクスプローラーで右クリックするか、小さなsystrayアイコンを使用してクリックします。エージェントがまだ稼働している場合、これは機能しません。スティックの取り外し時に最後のシェルを閉じる前に、必ずエージェントを殺してください。
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 8472 killed;
注:通常、使用します eval $(ssh-agent -k)
Env varを解明することもできますが、シェルを閉じる直前にこれを行うと、それは無関係です。上記の起動スクリプト .mgssh
のクリーンアップの世話をします ~/.ssh/agent.env
ファイルを作成する必要もありません。