दो संबंधित कारण हैं कि .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
किया जाता है, जो एक बहुत ही आम बात है।
gl
? अन्तिम छोर? जीयूआई?