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