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+! . (LihatREADLINE
bagian,Completing
subbagian, diman 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. Lihathelp complete
(pada baris perintah Anda),Programmable Completion
subbagian diman bash
dan dalam dokumentasi online bash, dancomplete
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.