Saya memiliki akses pengguna (tanpa root) ke mesin Linux (Suse) di mana saya mengembangkan beberapa skrip bash dan aturan pelengkapan bash yang terkait.
Karena skrip hanya milik pengguna saya dan oleh karena itu saya memerlukan aturan lengkap hanya "aktif" untuk saya (bagian dari fakta bahwa saya tidak memiliki akses tulis root), menempatkan skrip bash_completion saya ke dalam /etc/bash_completion.d/
folder bukan merupakan pilihan.
Saat ini saya memberi nama file saya .bash_completion.myscript
dan sumbernya langsung dari saya .bashrc
, tapi saya hanya ingin tahu apakah ada cara "standar" lainnya untuk mencapai hasil ini, sudah dipertimbangkan dalam implementasi bash.
Misalnya, membuat folder /home/myuser/.bash_completion.d/
?
sumber
.bash_completion
adalah file dan bukan direktori. Karenabash_completion.d
ini adalah direktori, saya berasumsi bahwa saya hanya bisascp
menjadi lokal sayabash_completion.d
dan mengganti namanya di server jauh, tetapi pada login berikutnya ia mengatakan itu harus berupa file.Inilah cara pengguna lokal dapat memiliki
~/.bash_completion.d/
direktori yang berfungsi .edit file:,
nano ~/.bash_completion
tambahkan berikut ini:buat direktori:
mkdir ~/.bash_completion.d
edit file:,
~/.bash_completion.d/myscript
tambahkan berikut ini:sumber .bash_completion:
. ~/.bash_completion
Memperbarui
Jika Anda mengantisipasi memiliki
~/.bash_completion.d/
direktori kosong , dan ingin menghindari melihat pesan kesalahanbash: /home/<username>/.bash_completion.d/*: No such file or directory
, tambahkan tes jenis file dengan[ -f "$bcfile" ]
.sumber
The jawaban dengan Russell E Glaue besar tapi
~/.bash_completion
tidak lengkap.Masalahnya adalah ketika
~/.bash_completion.d/
kosong dan selanjutnyafor f in ~/.bash_completion.d/*
mencetak pesan kesalahan berikut:Solusi portabel yang paling sederhana adalah dengan melewatkan loop jika direktori kosong:
sumber
Solusi yang lebih sederhana adalah dengan menggunakan opsi nullglob. Meskipun ini tidak portabel, tidak ada juga penyelesaian bash. Jadi portabilitas tidak masalah.
Juga, Anda ingin menggunakan kutipan di sekitar variabel saat sumber. Ini menangani kasus di mana file memiliki spasi karakter khusus lainnya.
sumber
nullglob
) sangat membantu pembaca.Setidaknya bash-completion 2.8 dan yang lebih baru memungkinkan opsi untuk menempatkan penyelesaian Bash lokal dalam direktori
Nama file yang lengkap atau nama tautan simbolik harus cocok dengan nama perintah masing-masing. Penyelesaian ini hanya dimuat berdasarkan permintaan. Penyelesaian yang disimpan dalam file
~/.bash_completion
selalu dimuat.Referensi: Lihat "Q. Di mana saya harus menginstal kelengkapan lokal saya sendiri?" di https://github.com/scop/bash-completion/blob/master/README.md
sumber