क्या कोई बैश फ़ाइल है जो हमेशा इंटरेक्टिव मोड में खानी पड़ेगी चाहे वह लॉगिन या नॉन-लॉगिन ही क्यों न हो?


10

जहाँ तक मुझे पता है, इंटरैक्टिव गोले लॉगिन हो सकते हैं या लॉगिन नहीं हो सकते हैं, और उनके लिए स्टार्ट अप फाइलें अलग हैं।

  • यदि इंटरैक्टिव + लॉगिन खोल → /etc/profileतो की पहली पठनीय ~/.bash_profile, ~/.bash_loginऔर~/.profile
  • अगर इंटरएक्टिव + नॉन-लॉगइन शेल → /etc/bash.bashrcतब~/.bashrc

मैं हर बार कुछ चर सेट करना चाहता हूं, भले ही मैं एक इंटरेक्टिव शेल का उपयोग करता हूं चाहे वह एक लॉगिन शेल हो या नहीं।



1
@strugee नहीं, यह सवाल पर्यावरण चर के बारे में नहीं है।
गाइल्स का SO- दुष्ट होना बंद करें '

@ गिल्स हां, लेकिन आपका जवाब समान रूप से अच्छी तरह से लागू होता है।
स्ट्रैजी

1
@strugee ऐसा इसलिए है क्योंकि मैं तत्काल प्रश्न से परे हो गया और एक परिधीय विषय पर छुआ। एक उत्तर में एक पैराग्राफ एक डुप्लिकेट नहीं बनाता है। प्रश्न केवल डुप्लिकेट हैं यदि उनके पास समान रूप से समान उत्तर हैं, न कि यदि एक उत्तर में दूसरे को उत्तर देने के लिए पर्याप्त सामग्री होती है।
गाइल्स का एसओ- दुष्ट होना बंद करें '

जवाबों:


10

नहीं, वहाँ नहीं है। हां, यह एक डिजाइन दोष है।

निम्नलिखित सामग्री का उपयोग करें ~/.bash_profile:

if [ -e ~/.profile ]; then . ~/.profile; fi
if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi

खबरदार कि बैश में एक भी अजीब quirk है: जब यह एक गैर-संवादात्मक लॉगिन शेल है और मूल प्रक्रिया rshdया sshd, बैश स्रोतों ~/.bashrc(लेकिन नहीं ~/.bash_profileया नहीं ~/.profile) है। इसलिए आप इसे अपने शीर्ष पर रखना चाहते हैं .bashrc:

if [[ $- != *i* ]]; then return; fi

.Bashrc और .bash_profile और Login Shell और नॉन-लॉग शेल के बीच अंतर भी देखें ?


वे कारण सुरक्षा कारणों से हैं (सुरक्षा के प्रति संवेदनशील सेटिंग में अनपेक्षित फ़ाइलों को लोड न करें)।
वॉनब्रांड

2
@vonbrand एर, क्या? नहीं, इन quirks का सुरक्षा से कोई लेना-देना नहीं है। इसमें कोई "अप्रत्याशित फ़ाइलें" शामिल नहीं हैं ( .bashrcएक गैर-संवादात्मक सेटिंग में लोडिंग को छोड़कर वास्तव में अप्रत्याशित रूप से अच्छी तरह से गिना जा सकता है), और न ही किसी भी सुरक्षा-संवेदनशील संदर्भ की जांच।
गिल्स एसओ- बुराई को रोकना '

क्या यह लूप को रोकने के लिए एक विधि है?
ब्रियम

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