SSH सत्र के बाद टर्मिनल टैब शीर्षक


11

मैक ओएस एक्स में (मैं 10.6.8 पर हूं, हालांकि मेरा मानना ​​है कि अन्य संस्करण समान हैं) एक दूरस्थ मशीन में ssh'ing टर्मिनल में वर्तमान टैब का शीर्षक बदल देता है। अनायास, जब मैं रिमोट मशीन से डिस्कनेक्ट करता हूं, या तो स्पष्ट रूप से exitया टाइमआउट के माध्यम से, टैब का शीर्षक वापस नहीं बदलता है जो यह था।

लगभग दैनिक आधार पर यह लगभग मुझे दिल का दौरा पड़ने का कारण बनता है, जब मैं कुछ कमांड या अन्य प्रदर्शन कर रहा होता हूं, केवल अपनी आंख के कोने से बाहर देखने के लिए कि टैब को अभी भी उपयोगकर्ता @ रिमोटहॉट नाम दिया गया है। मैं एक सतर्क उपयोगकर्ता हूं जो हमेशा pwdकुछ भी करने से पहले अपने स्थान की पुष्टि करने के लिए आदि के लिए जाता है, फिर भी यह मुझे घबराहट के क्षण में पकड़ लेता है जब मैं कर रहा होता हूं DROP DATABASE xऔर मुझे टैब में दूरस्थ होस्ट नाम दिखाई देता है।

लंबी कहानी, क्या रिमोट होस्ट से डिस्कनेक्ट करते समय इस शीर्षक को वापस लाने का एक तरीका है, या क्या मुझे शीर्षक को रीसेट करने के लिए हर बार जब मैं डिस्कनेक्ट करता हूं, तो एक नया टैब खोलने के साथ रहना होगा?


जब आप छोड़ देते हैं तो टर्मिनल नाम भी रीसेट हो जाता हैnpm
Awesome_girl

जवाबों:


20

PROMPT_COMMANDअपने में जोड़ें.bash_profile

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOSTNAME}\007';$PROMPT_COMMAND"

PROMPT_COMMANDहर बार शीघ्र प्रदर्शित मार डाला जाता है।

कृपया ध्यान दें कि हम मौजूदा PROMPT_COMMANDपर्यावरण चर को शामिल करते हैं , जैसे कि हम किसी भी मौजूदा सेटिंग्स (यानी update_terminal_cwd) को नहीं खोते हैं ।


2
अपने कोड को PROMPT_COMMAND में जोड़ने के बजाय इसे जोड़ना सुनिश्चित करें , जैसे PROMPT_COMMAND="<your code>; $PROMPT_COMMAND"; अन्यथा, आप इस चर का उपयोग करने वाली अन्य कार्यक्षमता को अक्षम कर देंगे। उदाहरण के लिए, / etc / bashrc इसका उपयोग टर्मिनल की वर्तमान कार्य निर्देशिका को सेट करने के लिए करता है ताकि टर्मिनल इसे प्रदर्शित कर सके और विभिन्न कार्यों के लिए इसका उपयोग कर सके।
क्रिस पेज

@ChrisPage क्या $PROMPT_COMMANDअन्य कार्यक्षमता को संरक्षित करने के लिए नए कोड को पहले आने की आवश्यकता है ?
reve_etrange

सीधे पीएस 1 में क्यों नहीं डाला?
योंगवेई वू

क्या आप इसे कैसे संपादित करते हैं .bash_profile? sublime $HOME/.bash_profile?
विस्मयकारी_लड़की

@Awesome_girl सुनिश्चित करें कि sublकमांड स्थापित है, और फिर अपने टर्मिनल से फ़ाइल का उपयोग करके संपादित करें subl ~/.bash_profile। यदि यह आदेश मौजूद नहीं है, तो इसका अनुसरण करें: sublimetext.com/docs/2/osx_command_line.html
XtraSimplicity 18

2

ZSH (macOS पर नया शेल) के साथ @ s01ipsist का समाधान कार्य करने के लिए, आप इसे इसमें जोड़ सकते हैं ~/.zshrc:

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOST}\007';$PROMPT_COMMAND"
precmd() { eval "$PROMPT_COMMAND" }

1

यहां आपको अपनी .bash_profileफ़ाइल में पेस्ट करने की आवश्यकता है । यह बहुत साफ है और यह दृष्टिकोण लेता है कि जब Apple आपकी वर्तमान कार्यशील निर्देशिका को अपडेट करता है तो वह क्या करता है। चर के लिए चेक update_term_titleपहले से मौजूद है वास्तव में आवश्यक नहीं है (जैसा कि कोई भी कॉल नहीं करता है bash -- login), लेकिन सिर्फ एक गार्ड के रूप में मौजूद है।

if [ -z "$INSIDE_EMACS" ]; then
    # Update the terminal title on every prompt shown
    update_term_title() {
        # Print user@short-hostname once SSH quits.
        echo -ne "\033]0;${USER}@${HOSTNAME%%.*}\007"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "\033]0;\007" if you don't want anything.
    }
    # Check to see if update terminal title is present?
    if ! echo $PROMPT_COMMAND | grep -q update_term_title
    then
       # This function is not found in PROMPT_COMMAND, add it
       PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }update_term_title"
    fi
fi

1
लोल, मुझे आश्चर्य हुआ कि यह उत्तर किसने लिखा ... पता चला कि यह मैं था :-)
zapstar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.