नया टर्मिनल खोलने पर .bashrc निष्पादित नहीं किया गया


84

जब मैं Ubuntu 12.04 में एक नई टर्मिनल विंडो खोलता हूं तो कोड .bashrc निष्पादित नहीं करता है। .Bash_aliases फ़ाइल बनाते समय मैंने इस पर ध्यान दिया। जब मैंने एक नया टर्मिनल खोला, तब एलियास दिखाई नहीं दिया। हालाँकि जब मैं टाइप source .bashrcकरता हूँ तो उपनाम दिखाई देते हैं।

.bashrc हर बार चलाया जाना चाहिए मैं एक नया टर्मिनल विंडो खोल सकता हूं?

मैं यह कैसे कर सकता हूँ?


इसके बजाय प्रयास करें।
जिप्पी

4
@jippie नहीं, .profileलॉगिन समय पर पढ़ा जाता है, न कि जब आप एक नया टर्मिनल खोलते हैं, जब तक कि कहीं कोई गलतफहमी न हो। सेल्हा: क्या आपने डिफ़ॉल्ट कॉन्फ़िगरेशन से कुछ भी बदल दिया है? कृपया ps -o command $$ $PPIDकिसी टर्मिनल में चलाएँ और आउटपुट को कॉपी-पेस्ट करें।
गिल्स

1
बस सकारात्मक सुनिश्चित करने के लिए, आप .bashrcअपने घर फ़ोल्डर में डाल रहे हैं , है ना?
Jeded

जांच करना चाह सकते हैं echo $SHELL। मेरे साथ ऐसा हुआ और शेल बैश के बजाय / बिन / श था। इसे / etc / passwd और इसके रनिंग .bashrc में ठीक करें।
जो फ्लिन

जवाबों:


128

यह जरूरी नहीं है; मानक के शीर्ष पर .bashrc यह टिप्पणी है:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

मेरा मानना ​​है कि बैश टर्मिनल को लॉगिन शेल के रूप में चलाने का विकल्प है या नहीं। उबंटू के साथ, गनोम-टर्मिनल सामान्य रूप से लॉगिन शेल के रूप में नहीं चलता है, इसलिए .bashrc को सीधे चलाया जाना चाहिए।

लॉगिन गोले (आभासी टर्मिनल जैसे) के लिए, सामान्य रूप से फ़ाइल ~/.profileचलाया जाता है, जब तक आप या तो ~/.bash_profileया ~/.bash_login, पर वे डिफ़ॉल्ट रूप से नहीं हैं। डिफ़ॉल्ट रूप से, Ubuntu केवल .profile का उपयोग करता है।

मानक ~/.profileमें यह है:

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

यदि यह उपलब्ध है तो यह .bashrc चलाता है - $ BASH_VERSION मान लेना आपके वातावरण में मौजूद है। आप कमांड दर्ज करके इसके लिए जांच कर सकते हैं echo $BASH_VERSION, और इसे संस्करण संख्या पर कुछ जानकारी प्रदर्शित करनी चाहिए - यह रिक्त नहीं होना चाहिए।


4
इन निर्देशों को समझने के बाद, मैं अपने टर्मिनल एप्लिकेशन में गया, जिसे मैं संपादित करने के लिए गया -> प्रोफ़ाइल प्राथमिकताएँ -> शीर्षक और कमांड -> लॉगिन शेल के रूप में कमांड चलाएँ। मैंने इसे अनियंत्रित कर दिया। सहायता के लिए धन्यवाद।
सेला

क्या आप स्पष्ट कर सकते हैं कि कब (.bashrc) लोड / पढ़ा जाता है? ऐसा लगता है कि यह तब किया जाता है जब उपयोगकर्ता अपने डेस्कटॉप सत्र में लॉग इन करते हैं। इसका उत्तर यह बताता है कि जब आप एक नया टर्मिनल / शेल सत्र शुरू करते हैं "लॉगिन गोले (आभासी टर्मिनलों की तरह) के लिए, आम तौर पर फ़ाइल ~ / .profile चलाया जाता है ..."
हेजहोग

4
यह सामान्य रूप से तब चलता है जब आप एक नया लॉगिन शेल शुरू करते हैं (वास्तव में डेस्कटॉप सत्र नहीं, क्योंकि आप डेस्कटॉप सत्र से एक नया लॉगिन शेल चला सकते हैं)। जैसा कि मैंने कहा, यह डिफ़ॉल्ट रूप से चलाया जाता है, लेकिन यदि आपने बनाया है ~/.bash_profileया नहीं ~/.bash_login। आप चेकबॉक्स को चेक या अनचेक करके परीक्षण कर सकते हैं Edit -> Profile Preferences -> Title and Command -> "Run command as a login shellऔर फिर टर्मिनल से बाहर निकल सकते हैं। आप परीक्षण करने के लिए .profile से कुछ प्रतिध्वनित कर सकते हैं।
मार्टी फ्राइड

@Selah आपकी टिप्पणी ने मुझे और अधिक वास्तविक उत्तर देने में मदद की;) टिप्पणी करने के लिए बहुत बहुत धन्यवाद!
एलेक्स

इसलिए यदि आपने अपने सिस्टम पर ~/.bash_profileया बनाया ~/.bash_loginहै और उन्हें रखना चाहते हैं, लेकिन फिर भी चाहते हैं ~/.profileऔर वहाँ से ~/.bashrcनिष्पादित होते हैं, तो आप इसे अपने स्वयं के स्रोत से ~/.bash_profileया ~/.bash_loginलाइन वाले के साथ जोड़ सकते हैं source "$HOME/.profile"। आप लॉगिन गोले में भी ls के रंगीन उत्पादन वापस देता है!
तनीस

26

मेरे मामले में, बस .bashrcलोडर लाइनें गायब थीं.bash_profile

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

मैंने इसे मैन्युअल रूप से जोड़ा और इसने मेरे नए लॉगिन के साथ काम किया


3
.bash_profile? उबंटू .profileडिफ़ॉल्ट रूप से उपयोग करता है , नहीं .bash_profile
मुरु

ubuntu सर्वर अक्सर नहीं पिक .bashrc है ... ऐसा नहीं करता है ऊपर काम करता है ... .bash_profile बिल्ली [[-s "$ HOME / .bashrc"]] && स्रोत "$ HOME / .bashrc" # लोड डिफ़ॉल्ट
स्कॉट Stensland

यह मेरे लिए इसे हल कर दिया! मैंने जोड़ा pcreऔर ऐसा लगता है जैसे इसे जोड़ने के बजाय बैश प्रोफ़ाइल को ओवरवोट कर दिया।
आकारिरो यायाकोव

7

.bash_profileबैश शेल के लिए विन्यास रखता है। जब आप एक टर्मिनल खोलते हैं, तो यह पहले से कमांड पढ़ता है और निष्पादित करता है ~/.bash_profile। तो आप .bash_profilebashrc के अनुसार शेल को सेटअप करने के लिए निम्नलिखित को जोड़ सकते हैं ।

. ~/.bashrc

जब तक आपका टर्मिनल एक लॉगिन शेल नहीं चला रहा है (जो कि उबंटू में डिफ़ॉल्ट रूप से नहीं है), ~/.bash_profileपढ़ा नहीं जाएगा (और यह उबंटू में डिफ़ॉल्ट रूप से मौजूद नहीं है)
muru

5

यदि $BASH_VERSIONसेट नहीं किया गया है, तो chshअपने शेल को सेट करने के लिए कमांड का उपयोग करने का प्रयास करें /bin/bash

मेरे पास 12.04 एलटीएस के साथ एक समान मुद्दा था, और यह पता चला कि नए उपयोगकर्ता खाते में डिफ़ॉल्ट शेल सेट था /bin/sh, जो समस्या का कारण था।


यही कारण था!
मुल्ला

1

.Profile में टिप्पणी करने के लिए Accoding

~ / .profile: लॉगिन शेल्सेस के लिए कमांड दुभाषिया द्वारा निष्पादित किया जाता है। 11 इस फ़ाइल को bash (1) द्वारा नहीं पढ़ा जाता है, अगर ~ / .bash_profile या ~ / .bash_login¬ 10 # मौजूद है।

तो वहाँ आप जाते हैं, अगर ~/.bash_profileया ~/.bash_login exists, उन के बजाय भाग जाएगा~/.profile

यदि आप चलाना चाहते हैं ~/.bashrcबस लाइन जोड़ने source ~/.bashrcमेंbash_profile


1
मैंने ठीक उसी मुद्दे का अनुभव किया है। .bashrcजब तक मैंने कोई .bash_profileफ़ाइल नहीं बनाई थी, तब तक मेरा खतना किया जा रहा था । इसलिए मैंने source ~/.bashrc अपनी .bash_profileफाइल में लाइन प्रीपेंड की ।
लशै

0

इसके बजाय सभी के माध्यम से जाने के बजाय बस Edit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell"और कस्टम कमांड बॉक्स में लिखें bashऔर इसे बंद करें। अगली बार जब आप टर्मिनल खोलेंगे, तो यह भी स्वचालित रूप से चला जाएगा।


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