आप कितने अलग-अलग तरीकों से बैश में "उपनाम" बना सकते हैं?


10

मुझे केवल दो तरीकों का पता है: alias foo=barऔर function foo() { bar }

कारण मैं पूछ रहा हूँ कि अचानक मेरे बैश सत्रों में से एक - मैं lnकमांड नहीं चला सकता क्योंकि (जहां मेरे पर्यावरण चर में प्रविष्टियों में से एक है) के bashसाथ गलत हो रहा है ।-bash: /usr/local/.../ln: No such file or directory/usr/local/.../PATH

PATHहालाँकि यह कोई समस्या नहीं है , क्योंकि अगर मैं which lnइसे चलाता हूँ तो अपेक्षित बाइनरी /usr/bin/ln(जो मैं पूर्ण पथ निर्दिष्ट करता हूँ तो मैं ठीक चला सकता हूँ) को आउटपुट करता हूँ।

मैंने lnअपनी aliasऔर functionघोषणाओं में भी जाँच की, और कुछ भी नहीं है:

$ declare -f | grep ln
$ alias | grep ln

समस्या सिर्फ एक बैश सत्र में हो रही है। यदि मैं एक नया शेल शुरू करता हूं, तो यह फिर से ठीक हो जाता है, लेकिन मैं यह जानना चाहता हूं कि इस एक विशेष सत्र के दौरान अचानक यह समस्या क्या हुई।

क्या इस कारण हो सकता है के रूप में कोई विचार?

जवाबों:


10

whichकमांड का उपयोग करते समय सावधान रहें । type ...कमांड का उपयोग करने के लिए बेहतर है ।

$ type ln
ln is /bin/ln

आप whereisकमांड का उपयोग भी कर सकते हैं :

$ whereis ln
ln: /bin/ln /usr/share/man/man1p/ln.1p.gz /usr/share/man/man1/ln.1.gz

आप सही हे! जब मैं दौड़ता type lnहूं तो मुझे वह मिलता है ln is hashed (/usr/local/.../ln)जो समस्या प्रतीत होता है, लेकिन इसका क्या मतलब है कि यह "हैशेड" है? मैंने कभी भी बैश में उस सुविधा के बारे में नहीं सुना है।
ईथर जूल

3
@ क्षमता - बैश एक कमांड के नाम का एक हैश (एक कुंजी = मूल्य सूची) रखता है और जहां यह स्थित है। आप hash -lकमांड के साथ सूची देख सकते हैं । जब आप कमांड का उपयोग करते हैं तो यह गतिशील रूप से निर्मित होता है।
स्लम

@ साथी - मैंने अभी आपके प्रश्न को बढ़ा दिया है, इसलिए आप केवल away-) सेंट दूर हैं।) जब आपके मुद्दे का समाधान हो जाता है तो आप जवाब स्वीकार कर सकते हैं और आपको लगता है कि यह सबसे अच्छा जवाब है।
स्लम

@ सहवास - वहाँ कोई और बस आपको उकसाता है तो अब आपके पास १६ पीटी है।
स्लम

1
धन्यवाद! मैं hash -rकमांड-टू-पाथ हैशटेबल को रीसेट करने के लिए दौड़ा , और lnअब वापस काम करने के आदेश पर वापस आ गया हूं ।
ईथर जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.