Otomatik tamamlama root olarak kaydedildiğinde çalışmaz


23

Sadece beni rahatsız eden bir şeyle karşılaştım. Ubuntu'da otomatik tamamlama bir cazibe gibi çalışır, ancak root olarak giriş yaptığımda, örneğin sadece tamamlamayı otomatik tamamlama sualıyorum tab.

Neden böyle çalışıyor? Biri bunu değiştirebilir mi?


Aslında root olarak mı giriş yapıyorsunuz yoksa sudo su mu kullanıyorsunuz?
Marty Fried

@MartyFried Evet, ben diong sudo su. Fark ne?
Patryk

Bana göre çalışıyor gibi görünüyor, bize çalışmadığı zaman, kopyalayabileceğimiz bir şey verebilir misiniz?
ste_kwr

1
@lordmonkey: Belki hiçbiri, gerçekten emin değilim. Su ya da sudo su'nun hatırlamadığım bir yönden biraz farklı olduğunu düşünüyorum, bu yüzden aynı şartlar altında bunu kontrol edebildiğimden emin olmak istedim. İşe benziyor gibi görünüyor, ama "bazen" dedin, bu yüzden yalnızca iki kez kontrol etmenizi ve yeniden üretilebilir kılmayı denemenizi ya da yalnızca sizi kandıran başka bir şeyin olmadığından emin olun - yani kullanıcı hatası - hey, herkese olur! :)
Marty Fried

Yanıtlar:


41

/root/.bashrcDosyanızı bu satırlar için kontrol edin

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

Eğer yoksa, favori metin editörünüzü kullanarak onları dosyanın sonuna ekleyin.


Mine .bashrc belirtilen satırları içeriyordu ancak yorumlandı; satırları uncommented ve yeni .bashrc'yi besledi; işler şimdi oldukça iyi görünüyor.
Ankit

En bash_completionazından benim durumumda satır, bash_completionzaten etkinleştirildiğini iddia ettiği için yorumlandı /etc/bash.bashrc, ancak bu dosyada ayrıca satırların da yorumlandığı belirtildi. etcDosyayı uncomment etmek yerine, içindeki satırı uncomment etmek daha iyidir /root/.bashrc.
Peregring-lk,

7

Hangi Ubuntu sürümünü kullandığınızı söylemediniz.

  • bash-completionPaketin kurulu olup olmadığını kontrol edin :

    sudo apt-get install bash-completion
  • Madeni kullanarak giriş yaparsam çalışır: sudo -i


Root'un .bashrc dosyasını kaldırmanın amacı nedir?
geirha

Bir sonraki oturum açma / oturum açma sırasında varsayılan .bashrc dosyasının yenileneceğini düşünüyorum. Veya belki de otomatik tamamlama için bir çeşit "devre dışı bırakma" içerebilir (bunun mümkün olup olmadığını bilmeyin). Yine de yazmamın asıl nedenini hatırlayamıyorum.
Savvas Radevic,

2
Hayır, yeni bir .bashrcyaratılmayacak ve /etc/bash_completionkaynaklanmayacak, sadece bash'ın varsayılan tamamlaması mevcut olacak.
geirha

Tamam, düzenlendi ve kaldırıldı. Girişiniz için teşekkür ederiz! Acaba rağmen eğer ~ / .bashrc can "unsource" Bir dosya veya eğer disable-completionhala mevcuttur: superuser.com/questions/37148/...
Savvas Radevic

3

Ubuntu 13.10 /etc/bash.bashrciçin kontrol edin

# 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

Yorumlanabilirler. Onları yorumlamadan işe yarıyor.


0

Bunun işe yaradığını buldum (yukarıdaki cevaplara benzer ancak bir bükülme ile)

Düzenlenmesi gereken dosya (en azından 12.04 olan benim durumumda) /root/.bashrc idi. Bu benim durumumda mantıklı geliyor, çünkü normal kullanıcı otomatik olarak tamamlanıyordu ama benim kök değildi.

Yine de belirtilen dosyadaki tüm gerekli kodu buldum ama yorum yapıldı:

# 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

Sadece yorum yapılmadı:

# 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

Kurtarıldı ve gayet iyi çalıştı.

Umarım bu birine yardımcı olur.


0

Linux Mint 18'de (Xenial'a göre), bashrc'nizi düzenlemeniz gerekir:

sudo nano /etc/bash.bashrc

ve yorum yapın (kaldır # bu bölüme her satırın önünü ):

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

Bu kadar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.