नया tmux सेशन bashrc फाइल को सोर्स नहीं करता है


17

सारांश

जब मैं एक नया tmux सेशन बनाता हूं, तो मेरा प्रॉम्प्ट एक डिफ़ॉल्ट बैश कॉन्फ़िगरेशन से खींचता है और मुझे source ~/.bashrcअपने कस्टमाइज़ किए गए प्रॉम्प्ट के लिए मैन्युअल रूप से चलना पड़ता है ।

विश्लेषण

मैं एक RHEL 7 मशीन का उपयोग कर रहा हूं। मैंने थोड़ी देर पहले एक बैश अपडेट के बाद इस व्यवहार को नोटिस करना शुरू किया, लेकिन अब तक सवाल पूछने के लिए आस-पास नहीं पहुंचा (और मुझे यकीन नहीं है कि यह अपडेट किसके आसपास होने लगा)।

उदाहरण के लिए, मैंने ऐसा दिखने के लिए अपना संकेत अनुकूलित किया है:

[user@hostname ~]$

जब भी मैं एक नया tmux सेशन शुरू करता हूं, तो वह उपयोग करता है जो बैश डिफ़ॉल्ट प्रतीत होता है:

-sh-4.2$

एक त्वरित रन source ~/.bashrcहमेशा समस्या को ठीक करता है, लेकिन यह कष्टप्रद है कि मुझे हर बार ऐसा करना पड़ता है जब मैं कुछ छोटा करना चाहता हूं। कैसे फिर से स्वचालित रूप से ऐसा करने के लिए tmux पाने के बारे में कोई विचार?

यदि किसी भी अधिक जानकारी की आवश्यकता है, तो मुझे प्रदान करने में खुशी होगी।

tmux.conf

संदर्भ के लिए, मेरे पास मेरी tmux.confफ़ाइल नीचे है, हालांकि यह शायद ही आप कस्टम कह सकते हैं।

setw -g mode-keys vi

# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"

जवाबों:


19

जहाँ तक मुझे पता है, डिफ़ॉल्ट रूप tmuxसे एक लॉगिन शेल चलाता है। जब bashएक इंटरैक्टिव लॉगिन शेल के रूप में शुरू हो जाती है, इसके लिए लग रहा है ~/.bash_profile, ~/.bash_loginऔर ~/.profile। तो आपको source ~/.bashrcउन फाइलों में से एक में डालना होगा ।

इस समस्या को हल करने का दूसरा तरीका है कि आप अपनी फ़ाइल .tmux.confको लाइन में लगाएं:

set-option -g default-shell "/bin/bash"

1
मैंने source ~/.bashrcअपने साथ लाइन जोड़ी .bash_profile, लॉग आउट करने की कोशिश की और एक नया tmux सेशन बनाया, लेकिन कोई बदलाव नहीं हुआ। कोई विचार?
जस्टिन डब्ल्यू फ्लॉरी

1
अपनी फ़ाइल .tmux.confको लाइन में लगाने का प्रयास करें set-option -g default-shell "/bin/bash"। यह आपके मुद्दे को हल करना चाहिए (कम से कम मुझे आशा है कि)!
22

मेरे tmux कॉन्फ़िगरेशन को पुनः लोड करने के बाद, इसने मेरी समस्या हल कर दी! अपना उत्तर संशोधित करना चाहते हैं या नया बनाना चाहते हैं? मुझे इसे स्वीकार करते हुए खुशी होगी। :)
जस्टिन डब्ल्यू। फ्लोरी

तुम दयालु हो, मैंने जल्दी से अपना उत्तर संशोधित कर दिया!
१५

2
MacOS उपयोगकर्ताओं के लिए ध्यान दें: यदि आपने bashHomebrew के माध्यम से इंस्टॉल किया है और यह काम नहीं करता है, तो बदल "/bin/bash"दें "/usr/local/bin/bash"

5

यह बैश इनिट फाइलों से संबंधित है। डिफ़ॉल्ट रूप से, ~/.bashrcएक इंटरैक्टिव, गैर-लॉगिन शेल में उपयोग किया जाता है । यह एक लॉगिन शेल में उपलब्ध नहीं होगा। Tmux डिफ़ॉल्ट रूप से एक लॉगिन शेल का उपयोग करता है । इसलिए, tmux स्किप द्वारा शुरू किए गए गोले ~/.bashrc

default-command खोल कमान

डिफ़ॉल्ट एक खाली स्ट्रिंग है, जो tmux कोdefault-shell विकल्प के मान का उपयोग करके एक लॉगिन शेल बनाने का निर्देश देता है

बैश के लिए Init फाइलें,

  1. लॉगिन मोड:
    1. /etc/profile
    2. ~/.bash_profile, ~/.bash_login, ~/.profile(केवल पहली एक है कि मौजूद है)
  2. इंटरैक्टिव गैर-लॉगिन :
    1. /etc/bash.bashrc (कुछ लिनक्स, मैक ओएस एक्स पर नहीं)
    2. ~/.bashrc
  3. गैर-सहभागी:
    1. स्रोत फ़ाइल में $BASH_ENV

समाधान

अजीब इंटरैक्टिव, गैर-लॉगिन लोडिंग आवश्यकता लोगों को अन्य स्थितियों में भी भ्रमित करती है। सबसे अच्छा समाधान की लोडिंग आवश्यकता बदलने के लिए है ~/.bashrcके रूप में केवल इंटरैक्टिव है, जो वास्तव में कुछ distros, Ubuntu की तरह क्या, कर रहे हैं।

# write content below into ~/.profile, or ~/.bash_profile

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

यह आपकी इच्छा का समाधान होना चाहिए। और मैं प्रोफ़ाइल में प्रत्येक बैश उपयोगकर्ता सेटअप की सिफारिश करता हूं।

संदर्भ


2

निम्नलिखित को जोड़ना .tmux.conf:

set-option -g default-shell "/bin/bash"

नहीं करता है वांछित परिणाम उपज।

केवल इच्छित परिणाम में जोड़ने source "$HOME/.bashrc"पर ~/.bash_profileही परिणाम प्राप्त होता है।

यह एक नया विंडो या फलक खोलते समय एक सक्रिय tmux सत्र पर काम करेगा, और एक नया tmux सत्र को अलग करने और खोलने पर भी।

पर परीक्षण किया गया:

VERSION="16.04.2 LTS (Xenial Xerus)"
tmux 2.1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.