GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Pelengkapan Otomatis Tidak Berfungsi Saat Mengetik Nama Perintah Setelah `sumber`?

source menelusuri PATH secara default.

Tetapi di bash, pelengkapan otomatis tidak berfungsi saat mengetik nama perintah setelah source .

Secara umum, kapan pelengkapan otomatis berdasarkan PATH bekerja, dan kapan tidak?

Bagaimana saya bisa membuatnya bekerja saat mengetik argumen ke source ?

Terima kasih.

Jawaban yang Diterima:

source (bash perintah bawaan) mengambil nama file argumen; pencarian PATH dipicu hanya jika nama file yang ditentukan tidak ditemukan. Jadi source foo coba buka dulu ./foo dan hanya ketika itu gagal, ia akan mencari /path/dir/foo . Coba tab-completion dengan nama file yang ada di direktori Anda saat ini, atau berikan jalur ke perintah yang Anda minati. Tab-complete seperti yang Anda harapkan.

  • Cara termudah untuk mencapai apa yang Anda inginkan adalah dengan mengenali bahwa penyelesaian-tab mencoba nama-file-lengkap tetapi Anda ingin perintah lengkap . Anda dapat memicu complete-command dengan M-! keybind alias Alt+! . (Lihat READLINE bagian, Completing subbagian, di man bash dan dalam dokumentasi bash online untuk fungsi penyelesaian lainnya dan keybind default.)

  • Cara yang sulit adalah merevisi fungsi penyelesaian default yang dipicu untuk source argumen pertama untuk memanggil keduanya nama file lengkap dan perintah lengkap fungsi. Lihat help complete (pada baris perintah Anda), Programmable Completion subbagian di man bash dan dalam dokumentasi online bash, dan complete perintah bawaan.

Secara umum, penyelesaian tab bersifat posisional, dan memanggil fungsi penyelesaian yang berbeda berdasarkan di mana Anda berada di baris perintah. Pada sistem Arch, paket dapat menginstal file penyelesaian ke /usr/share/bash-completion untuk memberikan penyelesaian kontekstual untuk executable mereka.


Linux
  1. Pipelined Sed Tidak Bekerja Pada Nama File yang Ditemukan Di Dalam Substitusi Perintah Bash Saat Dipanggil Dari Temukan "-exec"?

  2. Perintah Rm Dalam Skrip Bash Tidak Bekerja Dengan Variabel?

  3. Mengapa `keluar &` Tidak Berfungsi?

  1. Mengapa Ekspresi Reguler Bekerja Di X Tapi Tidak Di Y?

  2. Mengapa find -exec mv {} ./target/ + tidak berfungsi?

  3. Mengapa bash tidak berhenti pada kesalahan karena kegagalan dalam urutan perintah hubung singkat?

  1. Mengapa Substitusi Proses Bash Tidak Bekerja Dengan Beberapa Perintah?

  2. Mengapa Penundaan Lama Setelah Perintah Tidak Ditemukan?

  3. Linux – Mengapa Setuid Tidak Bekerja??