Apt-get pelengkapan otomatis

9

Saat ini saya menjalankan Debian Wheezy 64-bit.

Saya mengalami masalah dengan penyelesaian otomatis untuk apt-get. Saya telah menginstal bash-selesai.

Jika saya login sebagai root di shell, saya bisa menggunakan penyelesaian otomatis untuk apt-get (mis: apt-get install wicd [tab] [tab ]) dan itu akan menunjukkan kepada saya semua paket yang cocok dengan itu. Tetapi jika saya mencoba menggunakan penyelesaian otomatis untuk apt-get di pengguna non-root lain (bahkan dengan sudo) itu tidak akan berfungsi sama sekali. Saya dapat secara otomatis menyelesaikan hal-hal lain seperti nama file.

Ada bantuan?

Saya memiliki kode berikut di .bashrc dan / etc / profile saya

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Dennis Linuz
sumber
1
Pertama, periksa apakah root dan pengguna lain memiliki shell yang sama. Jika tidak, itulah alasan perilaku yang berbeda. Jika tidak, coba ini: 'apt-cache --no-generate pkgnames "wicd"'. Apakah itu bekerja? Itulah yang digunakan bash untuk menghasilkan penyelesaian 'apt-get install wicd [TAB]'.
angus
Keduanya menggunakan shell yang sama, bash. perintah apt-cache yang Anda berikan kepada saya tidak berfungsi dan menampilkan daftar semua paket wicd. Juga, yang saya temukan adalah ketika komputer saya pertama kali dinyalakan dan saya masuk ke shell untuk pertama kalinya (saya tidak memiliki gui login), pelengkapan otomatis apt-get akan bekerja dengan akun apa pun. Tetapi jika saya menjalankan window manager fvwm-crystal saya dengan startx, kemudian buka terminal, itu tidak akan berfungsi lagi hanya dengan akun pengguna saya. Ini masih bekerja dengan root di fvwm-crystal.
Dennis Linuz
OKE, inilah yang bisa terjadi. / etc / profile dan .bash_profile dijalankan pada shell login. Yaitu, ketika Anda login di konsol, atau ketika Anda menjalankan 'su'. Karena dalam kasus-kasus itu penyelesaian berfungsi, / etc / profile berfungsi. Yang tersisa adalah ~ / .bashrc. Periksa apakah garisnya '. / etc / bash_completion 'benar-benar dieksekusi. Letakkan sesuatu seperti 'echo OK' sebelum itu, buka terminal baru, dan periksa dikatakan 'OK'.
angus
apakah Anda pernah menguji ZSH?
Mohammad Efazati
.Bashrc Anda mungkin benar-benar hilang; ini adalah kasus saya
Galvani

Jawaban:

6

/etc/bash_completionFile Anda harus hilang.

sudo apt-get install bash-completion

harus menyelesaikan semua masalah Anda.

Karena Anda sudah memiliki saluran yang tidak diomortir /etc/bash.bashrcseperti yang ditunjukkan oleh Faheem Mitha dan yang lainnya, itu seharusnya berfungsi sekarang:

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

Alasan: bash-completionPaket sekarang memiliki file itu (/ etc / bash_completion). Dulu ada dalam bashpaket, tetapi tidak lagi.

info tentang perubahan paket

n611x007
sumber
apa yang seharusnya ada di file / etc / bash_completion ? Saya menjalankan perintah install bash-completion dan semuanya sudah merupakan versi terbaru tetapi file penyelesaian bash saya kosong
fifamaniac04
2

Coba jalankan ini:

chsh -s /bin/bash $USER
HaEl
sumber
1

Saya tidak ingat apakah ini perlu, tetapi coba batalkan komentar pada baris yang sesuai /etc/bash.bashrcjika belum dihapus, yaitu

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

Seingat saya, bash pelengkapan otomatis untuk parammeter perintah dilakukan melalui completeperintah. Anda harus memiliki skrip penyelesaian apt-get yang dimuat oleh bashrc pengguna root (mungkin /root/.bashrc), jadi Anda perlu login root untuk menjalankannya. Sudo tidak memuat skrip login root, itu hanya memberi Anda hak istimewa.

Mungkin Anda melewatkan skrip pelengkapan otomatis untuk pengguna non-root, sehingga mereka tidak memiliki bash pelengkapan otomatis yang dikonfigurasi untuk apt-get. Jika itu benar, muat fungsi itu untuk pengguna yang memiliki SEMUA hak istimewa dalam file sudoers.

D4RIO
sumber