रूट के रूप में लॉग करते समय स्वतः पूर्णता काम नहीं करती है


23

मैं अभी कुछ ऐसा कर रहा हूं जो मुझे परेशान कर रहा है। Ubuntu पर स्वतः पूर्णता एक आकर्षण की तरह काम करता है लेकिन जब मैं रूट के रूप में लॉगिन करता suहूं , उदाहरण के लिए मुझे tabकेवल कभी-कभी स्वतः पूर्णता प्राप्त होती है।

ऐसा क्यों काम करता है? क्या कोई इसे बदल सकता है?


क्या आप वास्तव में रूट के रूप में लॉग इन कर रहे हैं, या sudo su का उपयोग कर रहे हैं?
मार्टी फ्राइड

@MartyFried हां मैं diong हूं sudo su। अंतर क्या है?
पैट्रिक

यह मेरे लिए काम करने लगता है, क्या आप हमें एक विशिष्ट उदाहरण प्रदान कर सकते हैं जब यह काम नहीं करता है, कुछ ऐसा जिसे हम दोहरा सकते हैं।
स्टेप_काटर

1
@lordmonkey: शायद कोई नहीं, मैं वास्तव में निश्चित नहीं हूं। मुझे लगता है कि su या sudo su अपने आप में कुछ अलग है जो मुझे याद नहीं है, इसलिए मैं यह सुनिश्चित करना चाहता था कि मैं इसे उन्हीं शर्तों के तहत जाँच सकूं। ऐसा लगता है कि यह काम करता है, लेकिन आपने कहा "कभी-कभी", इसलिए मैं केवल आपको डबल-जांच का सुझाव दे सकता हूं और इसे पुन: पेश करने की कोशिश कर सकता हूं, या बस यह सुनिश्चित कर सकता हूं कि ऐसा कुछ और नहीं हो रहा है जो आपको बेवकूफ बना रहा है - यानी, उपयोगकर्ता की त्रुटि - हे, यह हर किसी के लिए होता है! :)
मार्टी फ्रेड

जवाबों:


41

/root/.bashrcइन लाइनों के लिए अपनी फ़ाइल की जाँच करें

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

यदि वे मौजूद नहीं हैं, तो उन्हें अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके फ़ाइल के अंत में जोड़ें।


मेरा .bashrc में उल्लेखित पंक्तियाँ थीं लेकिन उनकी टिप्पणी की गई थी; लाइनों को अनियोजित किया और नया .bashrc खट्टा कर दिया; चीजें अब बहुत अच्छी लग रही हैं।
अंकित

bash_completionलाइन, मेरे मामले में कम से कम, बाहर टिप्पणी की गई, क्योंकि उसका दावा है bash_completionपहले से ही में सक्षम किया गया है /etc/bash.bashrc, लेकिन उस फ़ाइल भी है कि लाइनों पर टिप्पणी की है। etcफ़ाइल को अनइंस्टॉल करने के बजाय , लाइन को अनइंस्टॉल करना बेहतर है /root/.bashrc
lk

7

आपने उल्लेख नहीं किया है कि आप किस उबंटू संस्करण का उपयोग करते हैं।

  • जांचें कि क्या आपके पास bash-completionपैकेज स्थापित है:

    sudo apt-get install bash-completion
  • मेरा काम करता है अगर मैं का उपयोग कर लॉगिन: sudo -i


जड़ को हटाने की क्या बात है?
गीरा

मुझे लगता है कि यह अगले लॉगआउट / लॉगिन पर डिफ़ॉल्ट .bashrc को पुन: उत्पन्न करेगा। या शायद यह स्वत: पूर्णता के लिए "निष्क्रियकरण" किसी प्रकार का हो सकता है (यदि यह संभव हो तो पता नहीं है)। मैं वास्तविक कारण याद नहीं कर सकता क्योंकि मैंने इसे लिखा था।
सवास्व राड्विक

2
नहीं, एक नया .bashrcनहीं बनाया /etc/bash_completionजाएगा , और इसे खट्टा नहीं किया जाएगा, केवल बैश का डिफ़ॉल्ट पूरा होने पर उपलब्ध होगा।
जियरा

ठीक है, संपादित और हटाया गया। आपके इनपुट के लिए धन्यवाद! हालांकि मुझे आश्चर्य है अगर ~ / .bashrc कर सकते हैं "unsource" एक फ़ाइल या अगर disable-completionअभी भी उपलब्ध है: superuser.com/questions/37148/...
Savvas Radevic

3

उबंटू 13.10 के लिए, जाँच /etc/bash.bashrcके लिए

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

उन पर टिप्पणी की जा सकती है। उन पर टिप्पणी न करना काम करता है।


0

पाया कि यह काम किया (ऊपर के उत्तरों के समान लेकिन एक मोड़ के साथ)

फ़ाइल को संपादित करने की आवश्यकता है (कम से कम मेरे मामले में 12.04 के साथ) /root/.bashrc। यह मेरे मामले में समझ में आता है, यह देखते हुए कि मेरा नियमित उपयोगकर्ता ठीक-ठाक ऑटो कर रहा था लेकिन मेरी जड़ नहीं थी।

वैसे भी उक्त फाइल में मुझे सभी आवश्यक कोड मिल गए थे लेकिन यह टिप्पणी की गई थी:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    #. /etc/bash_completion
#fi

बस इस पर टिप्पणी नहीं:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

बचाया, और यह ठीक काम किया।

आशा है कि यह किसी की मदद करता है।


0

लिनक्स टकसाल 18 (Xenial पर आधारित) में, आपको अपना bashrc संपादित करना होगा:

sudo nano /etc/bash.bashrc

और टिप्पणी करें ( #प्रत्येक पंक्ति के सामने निकालें ) यह खंड:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
     . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
     . /etc/bash_completion
  fi
fi

बस इतना ही।

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