Pelengkapan otomatis tidak berfungsi saat dicatat sebagai root

23

Saya baru saja menemukan sesuatu yang benar-benar mengganggu saya. Pelengkapan otomatis di ubuntu berfungsi seperti pesona tetapi saat saya masuk sebagai root, mis. suSaya tabhanya mendapatkan pelengkapan otomatis kadang-kadang.

Kenapa bisa seperti itu? Bisakah seseorang mengubahnya?

Patryk
sumber
Apakah Anda benar-benar masuk sebagai root, atau menggunakan sudo su?
Marty Fried
@ MartyFried Ya saya diong sudo su. Apa bedanya?
Patryk
Tampaknya bekerja untuk saya, dapatkah Anda memberi kami contoh spesifik ketika itu tidak berhasil, sesuatu yang dapat kami tiru.
ste_kwr
1
@ lordmonkey: Mungkin tidak ada, saya tidak begitu yakin. Saya pikir su atau sudo su dengan sendirinya sedikit berbeda dalam beberapa hal yang saya tidak ingat, jadi saya ingin memastikan bahwa saya dapat memeriksanya dalam kondisi yang sama. Sepertinya ini berfungsi, tetapi Anda mengatakan "kadang-kadang", jadi saya hanya dapat menyarankan Anda memeriksa ulang dan mencoba membuatnya dapat direproduksi, atau hanya memastikan tidak ada hal lain yang terjadi yang membodohi Anda - yaitu, kesalahan pengguna - hei, itu terjadi pada semua orang! :)
Marty Fried

Jawaban:

41

Periksa /root/.bashrcfile Anda untuk baris-baris ini

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

Jika tidak ada, tambahkan ke akhir file menggunakan editor teks favorit Anda.

Bruno Pereira
sumber
Milik saya .bashrc berisi baris yang disebutkan tetapi mereka berkomentar; menghapus tanda komentar pada baris dan mencari .bashrc baru; segalanya terlihat cukup baik sekarang.
Ankit
The bash_completionline, setidaknya dalam kasus saya, yang komentar, karena mengklaim bash_completionsudah diaktifkan di /etc/bash.bashrc, tetapi file yang memiliki juga bahwa garis komentar. Alih-alih menghapus tanda komentar pada etcfile, lebih baik menghapus tanda komentar pada baris /root/.bashrc.
Peregring-lk
7

Anda belum menyebutkan versi Ubuntu yang Anda gunakan.

  • Periksa apakah Anda telah bash-completionmenginstal paket:

    sudo apt-get install bash-completion
  • Milik saya berfungsi jika saya masuk menggunakan: sudo -i

Savvas Radevic
sumber
Apa gunanya menghapus .bashrc root?
geirha
Saya pikir ini akan membuat ulang .bashrc default setelah logout / login berikutnya. Atau mungkin itu bisa berisi semacam "penonaktifan" untuk pelengkapan otomatis (tidak tahu apakah itu mungkin). Saya tidak dapat mengingat alasan sebenarnya saya menuliskannya.
Savvas Radevic
2
Tidak, yang baru .bashrctidak akan dibuat, dan /etc/bash_completiontidak akan bersumber, hanya penyelesaian default bash yang akan tersedia.
geirha
OKE, diedit dan dihapus. Terima kasih atas masukannya! Meskipun saya bertanya-tanya apakah ~ / .bashrc dapat "menghapus sumber" file atau jika disable-completionmasih tersedia: superuser.com/questions/37148/…
Savvas Radevic
3

Untuk Ubuntu 13.10, periksa /etc/bash.bashrcuntuk

# 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

Mereka mungkin berkomentar. Berhenti mengomentari mereka berfungsi.

dbtek
sumber
0

Menemukan bahwa ini berhasil (mirip dengan jawaban di atas tetapi dengan twist)

File yang perlu diedit (setidaknya dalam kasus saya dengan 12,04) adalah /root/.bashrc. Ini masuk akal dalam kasus saya, mengingat bahwa pengguna biasa saya melengkapi otomatis baik-baik saja tetapi root saya tidak.

Pokoknya di file tersebut saya menemukan semua kode yang diperlukan tetapi berkomentar:

# 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

Hapus komentar saja:

# 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

Disimpan, dan itu berfungsi dengan baik.

Semoga ini bisa membantu seseorang.

neanderslob
sumber
0

Di Linux Mint 18 (berdasarkan Xenial), Anda harus mengedit bashrc Anda:

sudo nano /etc/bash.bashrc

dan beri komentar (hapus bagian #depan dari setiap baris) bagian ini:

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

Itu saja.

le hollandais volant
sumber