Chcę podpiąć się do modułu obsługi dla polecenia nie znalezionego
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
Chcę zastąpić to zachowanie własnym skryptem.
W szczególności chcę sprawdzić, czy polecenie istnieje na wyjściu lsvirtualenv -b
, a jeśli tak, chcę aktywować ten virtualenv.
Gdzie powinienem zacząć hakować?
ubuntu
bash
virtualenv
wim
źródło
źródło
Odpowiedzi:
Ogólnie
Linux Journal ma całkiem dobry artykuł:
Ze strony podręcznika użytkownika bash:
i
Ubuntu 14.04
Dowody empiryczne sugerują, że w instalacji Ubuntu 14.04 plik / etc / bash_command_not_found nie istnieje, jednak poprawnym plikiem jest skrypt python, znajdujący się w / usr / lib / command-not-found
źródło
/usr/lib/command-not-found
. W mojej instalacji Ubuntu 14.04 plik/etc/bash_command_not_found
nie istnieje.Ponieważ
bash
jego zachowanie jest regulowane przez funkcję powłokicommand_not_found_handle
(patrzman bash
poniżej WYKONANIE POLECEŃ).Aby zobaczyć, jakie zachowanie definiuje ta funkcja, możesz wydać:
Możesz zmienić program, który jest używany, ponownie definiując
command_not_found_handle
funkcję.W Ubuntu 14.04 LTS wydaje się, że domyślne zachowanie jest zdefiniowane bezpośrednio w
/etc/bash.bashrc
:źródło