2012-08-11 7 views
13

यह मैं क्या किया है:(विंडोज 7) मेरी .bashrc फ़ाइल Git बैश स्टार्टअप पर निष्पादित नहीं

cd ~ 
touch .bashrc 
notepad .bashrc 

और मेरे .bashrc की सामग्री (कहीं वेब पर पाया जाता है) है:

SSH_ENV="$HOME/.ssh/environment" 

# start the ssh-agent 
function start_agent { 
    echo "Initializing new SSH agent..." 
    # spawn ssh-agent 
    ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV" 
    echo succeeded 
    chmod 600 "$SSH_ENV" 
    . "$SSH_ENV" > /dev/null 
    ssh-add 
} 

# test for identities 
function test_identities { 
    # test whether standard identities have been added to the agent already 
    ssh-add -l | grep "The agent has no identities" > /dev/null 
    if [ $? -eq 0 ]; then 
     ssh-add 
     # $SSH_AUTH_SOCK broken so we start a new proper agent 
     if [ $? -eq 2 ];then 
      start_agent 
     fi 
    fi 
} 

# check for running ssh-agent with proper $SSH_AGENT_PID 
if [ -n "$SSH_AGENT_PID" ]; then 
    ps -ef | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null 
    if [ $? -eq 0 ]; then 
    test_identities 
    fi 
# if $SSH_AGENT_PID is not properly set, we might be able to load one from 
# $SSH_ENV 
else 
    if [ -f "$SSH_ENV" ]; then 
    . "$SSH_ENV" > /dev/null 
    fi 
    ps -ef | grep "$SSH_AGENT_PID" | grep -v grep | grep ssh-agent > /dev/null 
    if [ $? -eq 0 ]; then 
     test_identities 
    else 
     start_agent 
    fi 
fi 

किसी भी तरह से स्क्रिप्ट को निष्पादित नहीं किया जाता है। मुझे किसी भी तार को नहीं देखा जाता है जिसे प्रतिबिंबित किया जाना चाहिए। मैं लिनक्स और मैक ओएस एक्स में यूनिक्स कमांडलाइन से परिचित हूं, लेकिन मुझे नहीं पता कि यह विंडोज के तहत कैसे काम करता है। कोई सुझाव कृपया?

संपादित करें: ठीक है, मेरी गलती ... यह स्क्रिप्ट निष्पादित की गई है, लेकिन मैं पूरी तरह समझ नहीं पा रहा हूं कि यह क्या करता है। मैं रिमोट रेपो को हर बार पासफ्रेज़ के लिए पूछने से रोकने की उम्मीद कर रहा था। जैसा कि यह अभी खड़ा है, मैं अभी भी हर बार पूछता हूं।

+0

यह '.bashrc' पूरी तरह से यूनिक्स-केवल है। आप अपने गिट बैश में रखने के साथ क्या हासिल करने की कोशिश कर रहे हैं? – favoretti

+0

मैंने अपने प्रश्न के संपादन के बाद अपने प्रश्न के अंत में इसके लिए मेरे तर्क का उल्लेख किया। इसे कैसे प्राप्त किया जा सकता है? मुझे एसएसएच कैसे काम करता है इसकी पूरी समझ नहीं है। – codedog

उत्तर

21

बिंगो! एसएसएच एजेंट उस रास्ते में चलने के तरीके के साथ कुछ गलत था। Bashrc। मैंने here से एक की प्रतिलिपि बनाई और यह एक इलाज करता है! अब जब मुझे गिट बैश शुरू होता है तो मुझे केवल अपना पासफ्रेज दर्ज करना होगा, और बाद के किसी भी पुश को इसकी आवश्यकता नहीं होगी।

यहाँ अब स्क्रिप्ट के वास्तविक सामग्री है:

SSH_ENV=$HOME/.ssh/environment 

function start_agent { 
    echo "Initialising new SSH agent..." 
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV} 
    echo succeeded 
    chmod 600 ${SSH_ENV} 
    . ${SSH_ENV} > /dev/null 
    /usr/bin/ssh-add; 
} 

# Source SSH settings, if applicable 

if [ -f "${SSH_ENV}" ]; then 
    . ${SSH_ENV} > /dev/null 
    #ps ${SSH_AGENT_PID} doesn't work under cywgin 
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { 
     start_agent; 
    } 
else 
    start_agent; 
fi 
+1

अब मुझे यह काम करने के लिए मिला है मुझे सबसे अच्छा कमांड लाइन समाधान मिला: पावरहेल + कंसोल 2 + पॉश-गिट! – codedog

+0

यह काम करता है! आपका बहुत बहुत धन्यवाद। :) – wooncherk

+0

+1 स्व ... [GitHub के उदाहरण] (https://help.github.com/articles/working-with-ssh-key-passphrases) मेरे लिए काम नहीं किया या तो :: यह एक –

0

इस प्रयास करें, मेरे लिए काम करता है।

SSH_ENV=$HOME/.ssh/environment 

function start_agent { 
    echo "Initialising new SSH agent..." 
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV} 
    echo succeeded 
    chmod 600 ${SSH_ENV} 
    . ${SSH_ENV} > /dev/null 
    /usr/bin/ssh-add; 
} 

# Source SSH settings, if applicable 

if [ -f "${SSH_ENV}" ]; then 
    . ${SSH_ENV} > /dev/null 
    #ps ${SSH_AGENT_PID} doesn't work under cywgin 
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { 
     start_agent; 
    } 
else 
    start_agent; 
fi 
8

विंडोज पर सबसे सरल तंत्र यहां से एक है http://anterence.blogspot.co.uk/2012/01/ssh-agent-in-msysgit.html

'id_rsa' के अलावा अन्य प्रमुख नामों को दिखाने के लिए संशोधित, .bashrc फ़ाइल इस तरह दिखता है:

#! /bin/bash 
eval `ssh-agent -s` 
ssh-add ~/.ssh/github_rsa 
ssh-add ~/.ssh/otherkey_rsa 

आप कर रहे हैं बदले में प्रत्येक कुंजी के लिए पासफ्रेज के लिए संकेत दिया, लेकिन मशीन शुरू होने के बाद पहली बार।

+1

धन्यवाद! यह मेरे लिए काम किया है, बाकी में से कोई भी किया था। सुंदर भी समझने में आसान। – Dermot

+0

महान। केवल मामूली नकारात्मक पक्ष यह मैंने देखा है कि आप एक ssh हो सकता है है प्रति गिट बैश विंडो -जेंट प्रक्रिया। –

संबंधित मुद्दे