जब मैं एक टर्मिनल खोलता हूं तो इन सभी "घोषित-एक्स ..." लाइनों के कारण क्या होता है?


15

जब मैं अपने फेडोरा मशीन पर एक टर्मिनल खोलता हूं (या इसमें ssh), मुझे प्रॉम्प्ट से पहले इस तरह की लाइनों का एक गुच्छा मिलता है:

declare -x CVS_RSH="ssh"
declare -x DISPLAY="localhost:10.0"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
…

इसके उत्पन्न होने का कारण क्या है? यह मेरे द्वारा संपादित किए जाने के बाद हुआ हो सकता है .bashrc, लेकिन मेरा मानना ​​है कि मैंने जो भी परिवर्तन किया वह "PATH =" में एक और निर्देशिका पथ जोड़ना था।

अपडेट ( हैवीड के जवाब पर प्रतिक्रिया देना): मैंने grep'ed ~/.bashrc, ~/.bash_profileऔर /etc/bashrc"घोषित" के लिए और कुछ नहीं पाया।

मैंने देखा /etc/bashrcक्योंकि ~/.bashrcइसमें निम्नलिखित शामिल हैं:

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

मैं में कुछ भी नहीं दिख रहा है ~/.bashrcया ~/.bash_profileइसके बाद के संस्करण कोड, "पथ = ...", "निर्यात ..." और को छोड़कर स्क्रिप्ट "उर्फ ..."।

जब मैं अपनी .bashrcस्क्रिप्ट (" bash ~/.bashrc" का उपयोग करके ) चलाता हूं या .bash_profileस्क्रिप्ट मैं "घोषित" की सूची देखता हूं, लेकिन कोई त्रुटि संदेश नहीं। (अगर मैं दौड़ता हूं तो मुझे कुछ नहीं दिखता है /etc/bashrc)

~./bash_profile बहुत सरल है:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

हल : धन्यवाद andrew.n , आपके सुझाव ने मुझे इसे ट्रैक करने में मदद की। यह उन सभी "डिक्लेयर-एक्सएक्सएक्स ..." लाइनों को आउटपुट करता है यदि एक रन export(खुद से) होता है, और मैंने गलती से अपने "एक्सपोर्ट" और "पैट = =" के बीच एक सीआर डाला था .bashrc


/etc/profile.d/ में देखो
Freiheit

मुझे /etc/profile.d/ में क्या देखना चाहिए? वे सभी फाइलें क्या हैं? (शायद मुझे इसके बारे में एक नया प्रश्न बनाना चाहिए।)
डेरिल स्पिट्जर

धन्यवाद। मेरे मामले में यह निर्यात और पथ के बीच सीआर भी था :)
marlar

जवाबों:


8

Daud

env - HOME="$HOME" /bin/bash --login -xv 2>&1 | tee foo

क्रिया मोड में स्टार्टअप बैश करने के लिए। यह आरंभिक फ़ाइल की प्रत्येक पंक्ति को पढ़ेगा, और आरंभिक फ़ाइल की प्रत्येक पंक्ति, जैसा कि इसे निष्पादित करता है, आउटपुट को एक फ़ाइल में कॉपी करता है foo। तब आप देख सकते fooहैं कि किस कारण declare -xसे बुलाया जा रहा है।


6

यह पता लगाया कि बहुत सारे declare ...बयान exportएक तर्क के बिना कहीं चल रहे हैं।

मुझे अपने यहां एक आकस्मिक न्यूलाइन मिली .bashrc:

export
VARIABLE=value

जो होना चाहिए था

export VARIABLE=value

हाँ। यह सही जवाब है। यदि आप अपने टर्मिनल में "निर्यात" टाइप करते हैं, तो आपको वही घोषित -x आउटपुट प्रदर्शित होगा।
स्टर्लिंग बॉर्न

हाँ, यह मेरे लिए लागू होता है! मैंने गलती से अगली नई लाइन में निर्यात की सामग्री डाल दी। मैंने उन्हें एक ही पंक्ति में रखा और यह काम करता है।
fanchyna

3

हां, यह संभावना है कि यह आपके .bashrc से आ रहा है क्योंकि आपने इसे संपादित किया है। आपने स्क्रिप्ट में एक सिंटैक्स त्रुटि पेश की हो सकती है जो कि आउटपुट हो सकती है।

आप यह सुनिश्चित कर सकते हैं कि ये पंक्तियाँ आपके .bashrc में मौजूद हैं:

grep declare ~/.bashrc

आपको कम से कम उन 4 लाइनों को कंसोल से प्रिंट करके देखना चाहिए। आप अपनी .bashrc स्क्रिप्ट को प्रॉम्प्ट से चलाने का प्रयास कर सकते हैं और यह देख सकते हैं कि क्या कोई त्रुटि आउटपुट है:

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