आप वास्तव में क्या हो रहा है यह देखने के लिए शेल डिबगिंग सुविधा का उपयोग कर सकते हैं जब बैश एक इंटरैक्टिव शेल को आमंत्रित करता है। निम्नलिखित आपको उन सभी उपनामों को दिखाना चाहिए जो एक इंटरेक्टिव शेल को लॉगिन शेल से खोले जाने पर असाइन किए गए हैं:
bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
-x
-> डिबगिंग सक्षम करें
-l
-> लॉगिन शेल
-i
-> इंटरैक्टिव खोल
-c
-> आज्ञा
कमांड एग्जिट को चलाना आवश्यक है ताकि शेल वापस आए। -i
इस मामले में आवश्यक है क्योंकि पार्टी के लिए एक कमांड अन्यथा चलाने के लिए एक इंटरैक्टिव वातावरण की स्थापना नहीं होता।
यहाँ मेरे सिस्टम से एक उदाहरण है:
$ bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
++ alias 'ls=ls --color=auto'
$ alias -p
alias ls='ls --color=auto'
यह देखने के लिए कि उर्फ फ़ाइल को यह निर्धारित करने के लिए किस फ़ाइल को अंतिम रूप दिया गया था, यह हुआ कि आप grep को बढ़ा सकते हैं:
bash -x -l -i -c 'exit' 2>&1 | grep -E ' (alias|[.]|source) '
यह गलत सकारात्मक लौट सकता है, लेकिन यदि आप मैन्युअल रूप से दिए गए डेटा का निरीक्षण कर रहे हैं तो ठीक होना चाहिए। निष्पादित कमांड के सामने '+' प्रतीकों की संख्या गहराई को दर्शाती है।
+ . /home/jordan/.bashrc
++ alias 'ls=ls --color=auto'
++ . /home/jordan/.foo
+++ alias t=test
++ alias t=test2
इस नमूना आउटपुट में, यह दिखाता है कि .bashrc ls
.foo उपनाम के लिए एक उपनाम सेट करता है t
, और फिर .bashrc पिछले उपनाम को ओवरराइड करता है t
।