बैश तब तक नहीं पढ़ता है। जब तक मैन्युअल रूप से शुरू नहीं किया जाता है


22

bash.bashrcएक इंटरैक्टिव टर्मिनल से स्रोत नहीं होगा जब तक कि मैं मैन्युअल रूप bashसे टर्मिनल से नहीं चलता :

$ bash

या मैन्युअल रूप से इसका स्रोत:

$ source ./.bashrc

या चल रहा है:

$ st -e bash

यहाँ कुछ उपयोगी आउटपुट की उम्मीद है:

$ echo $TERM
st-256color

$ echo $SHELL
/bin/sh

$ readlink /bin/sh
bash

$ shopt login_shell
login_shell     off

मैं CRUX Linux 3.0 पर हूं और मैं उपयोग करता हूं dwmऔर st। मैंने प्रयोग किया है .bash_profileऔर .profileबिना किसी सफलता के साथ।

कोई विचार?

जवाबों:


19

यह क्यों स्रोत होगा? आप सही नहीं चल रहे हैं bash:

$ echo $SHELL
/bin/sh

अधिकांश आधुनिक प्रणालियों shमें एक मूल शेल के लिए एक सहानुभूति होती है। उदाहरण के लिए मेरे डेबियन पर:

$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 Aug  1  2012 /bin/sh -> dash

आपके मामले में, shजैसा bashकि समझाया गया है, लेकिन इसका एक लिंक है man bash:

यदि बैश को नाम श के साथ लगाया जाता है, तो यह पोस मानक के अनुरूप होने के साथ-साथ यथासंभव समीप के ऐतिहासिक संस्करणों के स्टार्टअप व्यवहार की नकल करने की कोशिश करता है। [...] जब नाम श के साथ एक इंटरैक्टिव शेल के रूप में आमंत्रित किया जाता है, तो bash वेरिएबल ENV की तलाश करता है, यदि परिभाषित किया गया है, तो इसका मान बढ़ाता है, और पढ़ने और निष्पादित करने के लिए फ़ाइल के नाम के रूप में विस्तारित मान का उपयोग करता है। चूँकि शेल शेल के रूप में किसी अन्य स्टार्टअप फाइल से कमांड को पढ़ने और निष्पादित करने का प्रयास नहीं करता है , इसलिए - आर्कफाइल विकल्प का कोई प्रभाव नहीं पड़ता है।

तथा

--norc
शेल को संवादात्मक होने पर सिस्टम इनिशियलाइज़ेशन फ़ाइल /etc/bash.bashrc और व्यक्तिगत इनिशियलाइज़ेशन फ़ाइल ~ / .bashrc पर पढ़ें और निष्पादित न करें। यह विकल्प डिफ़ॉल्ट रूप से चालू है यदि शेल को श के रूप में लागू किया गया है।

इसलिए, चूंकि आपका डिफ़ॉल्ट शेल है sh, .bashrcपढ़ा नहीं जाता है। बस का उपयोग करने के लिए अपने डिफ़ॉल्ट खोल सेट करें chsh -s /bin/bash


धन्यवाद। मुझे लगता है कि यह बात के बाद से बात नहीं /bin/shकी /bin/bash। मुझे लगता है कि /bin/bashजब मैंने मूल रूप से उपयोगकर्ता खाता बनाया है, तो शेल को स्पष्ट रूप से निर्दिष्ट नहीं करने से उपजी यह समस्या ।
जल्दबाजी

इसके अलावा, डेबियन / उबंटू स्टार्टअप समय को कम करने के प्रयास के भाग के dashलिए स्विच /bin/shकिया गया। यह प्रफुल्लित करने वाला था जब मेरे उपयोगकर्ता पूछने लगे कि उनके शेल ने अलग तरह से क्यों काम किया।
कुर्टम

18

Inbash_profile सुनिश्चित करें कि आपके पास निम्नलिखित हैं:

# .bash_profile

# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
  . ~/.profile
fi

# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
    . ~/.bashrc
fi

1
@terdon आपका उत्तर सही है। मेरा जवाब केवल तभी मान्य होगा जब वह चल रहा था bash। अच्छा कैच, मैं चूक गया।
जियात

यदि आप bashकिसी अन्य शेल के साथ चलाते हैं , जैसे कि डिफ़ॉल्ट रूप ksh93से उपयोग करता .profileहै , तो यह आपको कुछ सिरदर्द दे सकता है ।
कुसलानंद

यदि ~ / .bash_profile मौजूद नहीं है, तो आप इसे बना सकते हैं।
प्रतीक सिंघल

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