Saya ingin menghubungkan ke handler untuk perintah tidak ditemukan
wim@SDFA100461C:~$ thing
No command 'thing' found, did you mean:
Command 'tping' from package 'lam-runtime' (universe)
Command 'thin' from package 'thin' (universe)
thing: command not found
Saya ingin mengganti perilaku ini dengan skrip saya sendiri.
Secara khusus, saya ingin memeriksa apakah perintah ada di output lsvirtualenv -b
, dan jika demikian saya ingin mengaktifkan virtualenv itu.
Di mana saya harus mulai meretas?
ubuntu
bash
virtualenv
wim
sumber
sumber
Jawaban:
Secara umum
The Linux Journal memiliki artikel yang cukup bagus:
Dari halaman manual bash:
dan
Ubuntu 14.04
Bukti empiris menunjukkan bahwa pada instalasi Ubuntu 14.04, file / etc / bash_command_not_found tidak ada, namun file yang benar adalah skrip python, yang terletak di / usr / lib / command-not-found
sumber
/usr/lib/command-not-found
. Pada instalasi Ubuntu 14.04 saya, file/etc/bash_command_not_found
tidak ada.Sebab
bash
, perilakunya diatur oleh fungsi shellcommand_not_found_handle
(Lihatman bash
, di bawah COMMAND EXECUTION).Untuk melihat perilaku apa yang didefinisikan oleh fungsi itu, Anda dapat mengeluarkan:
Anda dapat mengubah program mana yang digunakan dengan mendefinisikan kembali
command_not_found_handle
fungsi.Di Ubuntu 14.04 LTS, tampaknya perilaku default didefinisikan langsung dalam
/etc/bash.bashrc
:sumber