उर्फ सेटिंग में क्यों काम नहीं कर रहा है?


11

मेरे पास इसकी अंतिम पंक्ति के रूप में यह है।

alias gl="cd /home/jrenner/glances/glances"

अभी तक रिबूट के बाद भी मुझे कमांड नहीं मिला जब gl टाइप कर रहा हूं। क्या हो रहा है? मैं सही उपयोगकर्ता के रूप में लॉग इन हूं।


आप कहाँ टाइप कर रहे gl? अन्तिम छोर? जीयूआई?
थॉमस वार्ड

1
मूल को कभी किसी ने संबोधित क्यों नहीं किया? सवाल। मैं पुष्टि कर सकता हूं कि एलियास परिभाषित .profileकिसी भी संदर्भ में काम नहीं करता है जो मैंने कोशिश की: पाठ कंसोल लॉगिन, चित्रमय टर्मिनल, या कुछ और, भले ही एक ही फ़ाइल से एन्वीरोमेंटल चर काम करते हों।
डैनियल महलर

@DanielMahler, क्या आपके पास एक कारण है?
मर्द सईद

जवाबों:


4

मुझे पूरा यकीन है कि lpanebr का विचार काम करेगा, लेकिन यहाँ एक और अधिक सुंदर समाधान है। उस अलियास कमांड को .bashrc इस तरह से करें कि मैं इसे कैसे करता हूं, या कुछ लोग अलियास को समर्पित फाइल जोड़ना पसंद करते हैं। इसे .aliasया जो भी कहें और .aliasअपने में जोड़ें.bashrc

काश मैं @lpanelbr की तरह स्वरूपण कर सकता। मुझे आश्चर्य है कि क्या कोई विकी है?


1
स्वरूपण के लिए के रूप में Askubuntu markdown का उपयोग करता है। कृपया विवरण के लिए askubuntu.com/editing-help देखें।
साजी 89

1
.bashrcकाम क्यों .profileनहीं करता है? इसके अलावा, किसी भी कारण के .alliasबजाय आपने उर्फ ​​फ़ाइल का नाम क्यों चुना .alias?
टॉम

# 1 मैं जो भी समझता हूं। bashrc बैश के लिए विशिष्ट है। गैर-बैश कमांड लाइन के लिए .profile विशिष्ट है। # 2 मुझे नहीं पता कि तुम्हारा क्या मतलब है। मैं आखिर जादू कर सकता हूं। (संपादित)
जेसन

7

दो संबंधित कारण हैं कि .profileफ़ाइल में डालने पर उपनाम हमेशा काम नहीं करता है। पहला यह है कि .profile(या .bash_profile) फ़ाइल केवल एक लॉगिन शेल के लिए चलाई जाती है। यदि आप X के तहत एक टर्मिनल विंडो में बैश शुरू कर रहे हैं, तो आपका टर्मिनल एमुलेटर (जैसे सूक्ति-शब्द) शायद लॉगिन शेल के रूप में बैश नहीं चल रहा है। [अधिकांश के पास इसे बदलने का एक विकल्प है यदि आप चाहें तो (डिफ़ॉल्ट के लिए वैसे भी) इसे लॉगिन शेल के रूप में चलाने के लिए नहीं है।]
शेल एक इंटरैक्टिव शेल .bashrcहोगा और इसलिए इसे चलाया जाएगा।

हालाँकि, आमतौर पर बैश को एक लॉगिन शेल के रूप में चलाया जाता है जब एक्स सत्र शुरू किया जा रहा था। इसलिए यदि उर्फ ​​कमांड हैं, तो .profileउन्हें पीएटीएच आदि जैसे पर्यावरण चर को स्थापित करने के साथ निष्पादित किया जाएगा, जब एक टर्मिनल विंडो खोली जाती है, तो उस टर्मिनल विंडो में कमांड को चलाने के लिए बैश का एक नया उदाहरण चलाया जाता है, और निष्पादित होता है। पर्यावरण चर के विपरीत, उपनामों को बैश के एक उदाहरण से एक नए द्वारा शुरू नहीं किया जा सकता है। इसलिए उपनामों को नए खोल पर पारित नहीं किया जाता है।

इसे देखने के लिए, इस प्रयोग को आजमाएँ:

export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash               #start a new bash instance
echo $ROBERT
alias james
exit               #end the new bash instance and revert to the original one
echo $ROBERT
alias james

ध्यान दें कि .bashrcजब इसे लॉगिन शेल के रूप में शुरू किया जाता है तो इसे bash द्वारा नहीं चलाया जाता है। इसलिए अपने एलियास को वहां रखना हमेशा तब तक काम नहीं करेगा जब तक कि आपकी ओर से .bashrcइसे हासिल नहीं .profileकिया जाता है, जो एक बहुत ही आम बात है।


सत्यापित: जोड़ने source .bashrcके लिए .bash_profileअनुमति दी उर्फ ​​सेट .bashrc में काम करने के लिए।
ट्रीफिश झांग सेप

ऐसा लगता है कि सही उत्तर होना चाहिए। इसके अलावा, उबंटू में बस अपने उपनाम जोड़ें ~/.bash_aliases। यही सही तरीका है। (विवरण के लिए .bashrc फ़ाइल पढ़ें)।
एमिलियो एम।

0

यदि आप bash ( echo $SHELL) को शेल दुभाषिया के रूप में उपयोग कर रहे हैं, तो मुझे लगता है कि यदि आप अपने सीडी फ़ंक्शन को परिभाषित करते हैं तो यह सबसे अच्छा (या शायद एकमात्र तरीका) है।

अपनी .bashrcफ़ाइल को संपादित करें और अंत में निम्नलिखित जोड़ें:

# my custom functions:
function gl () {
   cd /home/jrenner/glances/glances/
}

आप इसे भी इस तरह बढ़ा सकते हैं:

# my custom functions:
function cdw () {
   cd /home/jrenner/glances/glances/$1
   ls
}

और सीधे उप निर्देशिका में बदल दें और सामग्री को सूचीबद्ध करें।


1
यह एक अच्छा सुझाव हो सकता है, लेकिन यह एक उत्तर नहीं है, क्योंकि यह नहीं बताता है कि फ़ाइल aliasमें रखा गया निर्देश .profileविफल क्यों होता है।
टॉम


0

उबंटू में ऐसा करने का सही तरीका यह है कि आप अपने उपनाम को इसमें जोड़ें ~/.bash_aliases। यदि मौजूद नहीं है तो फ़ाइल बनाएँ।

यह फ़ाइल (यदि मौजूद है) डिफ़ॉल्ट से कॉल की जाती है ~/.bashrc, और उपनाम आपके टर्मिनल एमुलेटर में भी उपलब्ध होगा।

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