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+! . (LihatREADLINEbagian,Completingsubbagian, diman bashdan dalam dokumentasi bash online untuk fungsi penyelesaian lainnya dan keybind default.) -
Cara yang sulit adalah merevisi fungsi penyelesaian default yang dipicu untuk
sourceargumen pertama untuk memanggil keduanya nama file lengkap dan perintah lengkap fungsi. Lihathelp complete(pada baris perintah Anda),Programmable Completionsubbagian diman bashdan dalam dokumentasi online bash, dancompleteperintah 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.