मैं एक बदमाश उर्फ ​​घोषणा कैसे पा सकता हूं?


37

मैं यह खोजने की कोशिश कर रहा हूं कि एक विशिष्ट कहां aliasघोषित किया गया है। मैंने उन सभी सामान्य स्थानों को खोजा है, जहाँ मुझे एलियास की तलाश है:

  • ~ / .Bashrc
  • ~ / .Bash_profile
  • / Etc / bashrc
  • / Etc / प्रोफ़ाइल

नसीब के साथ।

मुझे पता है कि ऐसा aliasइसलिए है क्योंकि जब मैं करता which COMMANDहूं, मुझे मिलता है:

alias COMMAND='/path/to/command'
    /path/to/command

क्या यह पता लगाने का एक तरीका है कि क्या फ़ाइल aliasकेवल aliasनाम जानने की घोषणा करती है ?


3
उपनामों के बजाय पर्यावरण चर के बारे में एक संबंधित प्रश्न । असल में, कोई आसान तरीका नहीं है क्योंकि उपनाम कहीं भी सेट किया जा सकता था। set -xअपने शीर्ष पर सुझाए गए अनुसार डालने की कोशिश करें और देखें कि क्या यह आपके लिए नीचे आता है।
jw013

1
आपको या set -xसबसे ऊपर रखना होगा । सिर्फ क्यों नहीं चला या ? /etc/bash_profile/etc/bashrcbash -i -xbash -l -x
मिकेल

जवाबों:


30

मैं /etc/profile.d/अपमान के लिए देखूंगा alias

आप इसे खोजने के लिए निम्न कार्य भी कर सकते हैं:

grep -r '^alias COMMAND' /etc

इसके grepसाथ शुरू होने वाली लाइन की तलाश में फ़ाइलों के माध्यम से पुनरावृत्ति होगी alias COMMAND

यदि अन्य सभी विफल होते हैं, तो इसे अपने अंत में रखें ~/.bashrc

unalias COMMAND

26

वहाँ कुछ चीजें आप कोशिश कर सकते हैं:

  1. bash -vशेल स्टार्टअप के दौरान क्या लाइनें पढ़ी जा रही हैं, यह देखने के लिए उपयोग करें
  2. bash -xशेल स्टार्टअप के दौरान क्या कमांड चल रही हैं यह देखने के लिए उपयोग करें
  3. केवल एक स्टार्टअप फ़ाइल के साथ चलाएँ

बैश -v

-v विकल्प बनाता है bashहर स्क्रिप्ट फ़ाइल इसे पढ़ता है के रूप में यह इसे पढ़ता से प्रत्येक पंक्ति मुद्रित करें।

दौड़कर शुरू करें

bash -i -v >bash-i.out 2>&1

5-10 सेकंड प्रतीक्षा करें, फिर दबाएँ Ctrl+C

यह आपको एक सिंगल फाइल देगा bash-i.out, जो आपकी सभी स्टार्टअप फाइलों को एक साथ मर्ज (या संक्षिप्त) करने जैसा है।

फिर lessफ़ाइल खोलने के लिए उपयोग करें और उपनाम का उपयोग करके खोजें /aliasname

अब, तुलना करें कि फ़ाइल में अन्य पंक्तियों के संबंध में कहां उपनाम दिखाई देता है। उदाहरण के लिए, अधिकांश प्रणालियों /etc/bash.bashrcपर, शीर्ष पर एक टिप्पणी है जो कहती है /etc/bash.bashrcऔर ~/.bashrcएक भी है।

अगर यह आपकी के शीर्ष ऊपर है ~/.bashrc, तो यह शायद में एक स्टार्टअप फ़ाइल है /etcउर्फ परिभाषित करने कि की है, अन्यथा यह अपने में है ~/.bashrcया यह के माध्यम से सहित है एक फ़ाइल sourceया .(डॉट आदेश)।

यदि वह उपनाम नहीं दिखाता है, तो प्रयास करें

bash -l -v >bash-l.out 2>&1

यही कारण है कि पार्टी बताता है एक लॉगिन खोल, जो कुछ अलग स्टार्टअप फ़ाइलों को पढ़ता है, उदाहरण के लिए /etc/profileऔर ~/.bash_profileके बजाय /etc/bash.bashrcऔर ~/.bashrc

बैश -x

यदि bash -vआप आपको एक निश्चित उत्तर नहीं देते हैं, तो चलाने की कोशिश करें bash -x, जो आपके शेल को पढ़ रही पंक्तियों के बजाय शेल को चलाने वाले कमांड को प्रिंट करता है।

विधि मूल रूप से परिवर्तन के अलावा उपरोक्त के समान -vहै -x। (यदि आवश्यक हो तो आप दोनों का एक साथ उपयोग कर सकते हैं।)

केवल एक स्टार्टअप फ़ाइल के साथ चलाएँ

bash -i --rcfile="$HOME/.bashrc"

और देखें कि क्या आपके पास उपनाम है।

यदि आपके सिस्टम में है तो rcfileसेट के साथ /etc/bash.bashrcभी ऐसा ही करें।

फिर कोशिश करो

bash -l --rcfile="$HOME/.bash_profile"

और हर पार्टी स्टार्टअप फ़ाइल है कि साथ भी ऐसा ही profileपरिवर्तन अपने नाम में, उदाहरण के $HOME/.bash_profileलिए /etc/profile

जिस भी तरीके से उपनाम दिखाई देता है वह आपको वह फ़ाइल बताता है जिसे आपको देखना शुरू करना चाहिए।


2

शायद आपकी .xinitrc? आपको यह देखने के लिए भी जांचना चाहिए कि क्या आपके .bashrcया .bash_profileकिसी अन्य फाइल में स्रोत है या नहीं। उदाहरण के लिए, मैं अपने सभी उपनामों को इस आदेश द्वारा संदर्भित एक अलग फ़ाइल में रखता हूं:

[ -f ~/.bash_alias ] && source $HOME/.bash_alias

कुछ प्रश्न जो मदद भी कर सकते हैं: क्या यह एक नियमित या रूट उपयोगकर्ता के लिए है? यह कौन सी आज्ञा है? लिनक्स का क्या स्वाद?


0

मैं अपनी अन्य परिभाषाओं को रखने की बहुत ही सामान्य प्रथा का पालन करता हूं

~/.bash_aliases

और उसके बाद .bashrc से कॉल करना

[ -f ~/.bash_aliases ] && source $HOME/.bash_aliases

क्या मैं अनुमान लगा सकता हूँ कि आपके .bash_alias के बजाय आपके दूसरे कमांड में .bash_aliases का मतलब है?
2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.