.bashrc / .profile नए tmux सेशन (या विंडो) पर लोड नहीं है - क्यों?


94

जब tmux शुरू होता है या एक नई विंडो खोलता है, तो यह मेरे .profileया को लोड नहीं करता है .bashrc। मैं . ~/.bashrcहर बार टाइपिंग खत्म करता हूं । क्या अपने आप ऐसा होने का कोई तरीका है?

जवाबों:


146

हां, अपने अंत में .bash_profile, लाइन लगाएं:

. ~/.bashrc

यह स्वचालित रूप से उन परिस्थितियों में आरसी फाइल का स्रोत है जहां यह सामान्य रूप से केवल प्रोफाइल को संसाधित करता है।

जब bashकुछ फ़ाइलों को चलाने के लिए नियम जटिल होते हैं, और कमांड लाइन तर्क और पर्यावरण चर के साथ शेल के प्रकार (लॉगिन / गैर-लॉगिन, इंटरेक्टिव या नहीं, और आगे) शुरू होने पर निर्भर करते हैं।

आप उन्हें man bashआउटपुट में देख सकते हैं , बस देख सकते हैं INVOCATION- आपको संभवतः इसे पचाने और इसे डिकोड करने के लिए कुछ समय चाहिए होगा :-)


2
इस समाधान के साथ समस्या यह है कि कुछ सिस्टम पर .bashrc कॉल .bash_profile।
होन्ज़ा

1
मुझे अपने आप को ठीक करने दें: सिस्टम के पास .bashrc कॉलिंग .bash_profile नहीं है, लेकिन आपको यह सुनिश्चित करने की आवश्यकता है कि आप स्वयं नहीं कर रहे हैं।
होन्जा

1
@ होंजा, यह एक सबसे असामान्य सेटअप होगा क्योंकि यह लगभग हमेशा दूसरे तरीके से होता है। कोई निश्चित रूप से इसे इस तरह से करने की व्यवस्था कर सकता है लेकिन हमें उनकी पवित्रता पर सवाल
उठाना होगा

2
वास्तव में, यह पता चला कि मैंने इसे उस तरह से करने की व्यवस्था की है (और इसके बारे में भूल गया)। आपका स्वागत है कि आप मेरी पवित्रता पर सवाल उठाएँ ...;)
होन्जा

3
मुझे लगा कि यह सवाल था ....bashrc/.profile is not loaded on new tmux session (or window) — why?
dylnmc

16

रनिंग बैश ने स्पष्ट रूप से मेरे लिए काम किया, इस लाइन को मेरी ~ / .tmux.conf फ़ाइल में जोड़कर:

set-option -g default-command "exec /bin/bash"

1
यह मेरे लिए काम किया! हालांकि, आपको "निष्पादन" भाग की आवश्यकता नहीं है। मैं अपने में निम्नलिखित पंक्ति जोड़ा ~/.tmux.conf : set -g default-command "/bin/bash"। धन्यवाद दोस्त।
जोकर

लेकिन, क्या आपको पता है कि ऐसा क्यों हो रहा है? मैंने अचानक Ubuntu 16.04 से 18.04.2 तक अपग्रेड करने के बाद इस पर ध्यान दिया। यही एकमात्र अंतर है जिसके बारे में मैं सोच सकता हूं। इसके अलावा, मैंने देखा कि कुछ कॉन्फ़िगरेशन टूट गए और मुझे कुछ नए सिंटैक्स का पालन करना पड़ा (ऐसा लगता है कि tmux भी अपडेट हो गया है, लेकिन मुझे याद नहीं है कि मैं पहले जो वेरिफिकेशन किया करता था)।
जोकर

6

पूर्व के उत्तर ने समाधान प्रदान किए लेकिन इसका कारण नहीं बताया। यही पर है।

यह बैश इनिट फ़ाइलों से संबंधित है। डिफ़ॉल्ट रूप से, ~/.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

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

संदर्भ



1

मेरे लिए काम करने वाला समाधान निम्नलिखित है:

  • .bash_profileयदि आपके पास एक नहीं है तो एक फ़ाइल बनाएँ~
  • .bash_profileपुट के अंत में source ~/.bashrcयाsource ~/.profile
  • पुनरारंभ करें।

मुद्दा अब तय किया जाना चाहिए।


0

मेरे पास एक ही समस्या थी और अब तक के समाधान मेरे लिए कारगर नहीं थे। जो समाधान मेरे लिए काम कर रहा था वह यहां पाया जा सकता है

संक्षेप में, tmuxविंडोज़ / सत्र एक लॉगिन शेल का उपयोग करते हैं जो ~/.profileशुरू होने पर अन्य फ़ाइलों के बीच दिखता है।

जो मैं चाहता था कि प्रत्येक नई tmuxविंडो के साथ zsh शुरू हो, इसलिए मैंने अपने exec zshसबसे निचले भाग पर रखा ~/.profile

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