एप्ट-प्राप्त ऑटोकम्प्लीशन


9

मैं वर्तमान में 64-बिट डेबियन व्हीज़ी चला रहा हूं।

मैं apt-get के लिए ऑटो पूरा होने में कुछ परेशानी हो रही हूँ। मेरे पास बैश-समापन स्थापित है।

अगर मैं एक शेल में रूट के रूप में लॉग इन हूं, तो मैं apt-get (उदा: apt-get install wicd [tab] [tab ]) के लिए ऑटो कम्प्लीट का उपयोग कर सकता हूं और यह मुझे सभी पैकेज दिखाएगा जो कि मेल खाते हैं। लेकिन अगर मैं किसी अन्य गैर-रूट उपयोगकर्ता (भले ही sudo) में apt-get के लिए ऑटो पूर्णता का उपयोग करने की कोशिश करता हूं तो यह बिल्कुल भी काम नहीं करेगा। मैं फ़ाइल नाम जैसी अन्य चीजों को ऑटो कर सकता हूं।

कोई मदद?

मेरे पास मेरे .bashrc और / etc / प्रोफाइल में निम्न कोड है

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi

1
पहले, जांचें कि क्या रूट और अन्य उपयोगकर्ताओं के पास समान शेल है। यदि नहीं, तो यह अलग व्यवहार का कारण है। अन्यथा, यह आज़माएँ: 'apt-cache --no-pkgnames "wicd"'। क्या यह काम करता है? बैश 'एप्ट-गेट इंस्‍टॉल विच [टीएबी]' को पूरा करने के लिए उपयोग करता है।
कोण

वे दोनों एक ही शेल, बैश का उपयोग कर रहे हैं। apt-cache कमांड जो आपने मुझे दिया था वह काम करता है और सभी wicd संकुल की सूची दिखाता है। इसके अलावा, मुझे जो पता चला वह यह है कि जब मेरा कंप्यूटर पहली बार बूट होता है और मैं पहली बार शेल में लॉग इन करता हूं (मेरे पास कोई लॉग इन नहीं है), apt-get autocompletion किसी भी खाते के साथ काम करेगा। लेकिन अगर मैं अपना fwwm- क्रिस्टल विंडो मैनेजर startx के साथ चलाता हूं, तो एक टर्मिनल खोलें, यह सिर्फ मेरे उपयोगकर्ता खाते के साथ फिर से काम नहीं करेगा। यह अभी भी fvwm- क्रिस्टल में जड़ के साथ काम करता है।
डेनिस लिनुज़

ठीक है, यह वही हो सकता है। / etc / प्रोफाइल और .bash_profile लॉगिन शेल पर चलाए जाते हैं। यही है, जब आप कंसोल पर लॉगिन करते हैं, या जब आप 'सु' चलाते हैं। चूंकि उन मामलों में काम पूरा हो रहा है, / etc / प्रोफाइल काम कर रहा है। क्या बचा है ~ / .bashrc जाँचिए कि लाइन '। / etc / bash_completion 'वास्तव में निष्पादित किया जा रहा है। इससे पहले something इको ओके ’जैसा कुछ डालें, एक नया टर्मिनल खोलें, और इसे। ओके’ कहते हुए जांचें।
कोण

क्या आपने कभी ZSH का परीक्षण किया था?
मोहम्मद एफ़ाज़ती

आपका .bashrc पूरी तरह से गायब हो सकता है; यह मेरा मामला था
गलवानी

जवाबों:


6

आपकी /etc/bash_completionफ़ाइल गायब होनी चाहिए।

sudo apt-get install bash-completion

अपनी सभी समस्याओं को हल करना चाहिए।

यह देखते हुए कि आप पहले से ही /etc/bash.bashrcफहीम मीठा और दूसरों के रूप में लाइनों को अनियंत्रित कर चुके हैं , यह अब काम करना चाहिए:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

कारण: bash-completionपैकेज में अब वह फ़ाइल (/ etc / bash_completion) है। यह bashपैकेज में हुआ करता था , लेकिन अब और नहीं।

पैकेज परिवर्तन की जानकारी


/ etc / bash_completion फ़ाइल में क्या होना चाहिए ? मैंने बैश-
कम्प्लीशन

2

इसे चलाने का प्रयास करें:

chsh -s /bin/bash $USER

1

मुझे याद नहीं है कि यह आवश्यक है, लेकिन /etc/bash.bashrcयदि पहले से ही असंगत नहीं है, तो इसी पंक्तियों को अनसुनी करने का प्रयास करें

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

0

जैसा कि मुझे याद है, कमांड पैरामीटर्स के लिए बैश ऑटोकंप्लीशन कमांड के माध्यम से किया जाता है complete। आपके पास रूट-उपयोगकर्ता bashrc (शायद /root/.bashrc) द्वारा भरी गई एक उपयुक्त-पूर्ण स्क्रिप्ट होनी चाहिए, इसलिए आपको इसे चलाने के लिए रूट लॉगिन की आवश्यकता होगी। सूडो रूट लॉगिन स्क्रिप्ट लोड नहीं करता है, यह आपको विशेषाधिकार देता है।

हो सकता है कि आप गैर-रूट उपयोगकर्ताओं के लिए उस स्वतः पूर्ण स्क्रिप्ट को याद कर रहे हों, इसलिए उनके पास एप-प्राप्त के लिए कॉन्फ़िगर किए गए स्वतः पूर्णता नहीं है। अगर यह सच है, तो sudoers फ़ाइल के भीतर सभी विशेषाधिकार रखने वाले उपयोगकर्ताओं के लिए यह कार्य लोड करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.