特定のプログラムの前に機能を実行する

特定のプログラムの前に機能を実行する

これは要求時にSSHキーを追加する必要性から始まりましたが、ssh-agendOpenSSHはそれを行うことができないため、このzshスクリプトを思いつきました。ただし、不明な理由でssh"before" または before を実行する代わりに、git以前に実行されます。何もない、空のコマンドも可能です。

git ssh () {
    # Does the agent handle any keys?
    ssh-add -l &>/dev/null

    # True if last executed command (ssh-add -l) exits non-zero.
    if [ $? -ne 0 ]; then
        ssh-add
    fi

    # Execute git or ssh with all parameters, and not this function
    command $0 "$@"
}

orを入力したときにのみ実行されるのではなく、すべてのコマンドの後にこの関数が実行されるのはなぜですかgitssh

ベストアンサー1

機能を試してみましたがzsh -f(公開する前に完了しなければなりませんでしたが…)、期待どおりに機能することがわかりました。他の問題によってこの問題が発生したため、可能であれば質問を閉じます。

編集する:

問題が何であるか、解決策が気になる方は下記をご覧ください。

zshフレームワークを使用していますジムvcs_info現在のディレクトリがgitで使用されていることを確認するために使用されます。これを行うにはgitを呼び出す必要があります。vcs_infoデフォルトではgitを直接呼び出さないようです。

しかし、Freenodeの#zshのftのおかげで

zstyle ':vcs_info:git:*:-all-' command =git

フレームワークを取得した後、~/.zshrcこの問題は解決されました。

おすすめ記事