Я хочу подключить обработчик для команды не найден
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
Я хочу изменить это поведение своим собственным сценарием.
В частности, я хочу проверить, существует ли команда в выходных данных lsvirtualenv -b
, и если да, я хочу активировать эту virtualenv.
С чего мне начать взлом?
ubuntu
bash
virtualenv
Wim
источник
источник
Ответы:
В основном
В Linux Journal есть довольно хорошая статья:
Со страницы руководства bash:
а также
Убунту 14.04
Эмпирические данные свидетельствуют о том, что при установке Ubuntu 14.04 файл / etc / bash_command_not_found не существует, однако правильным файлом является скрипт на языке python, расположенный в / usr / lib / command-not-found
источник
/usr/lib/command-not-found
. На моей установке Ubuntu 14.04 файл/etc/bash_command_not_found
не существует.Ведь
bash
его поведение регулируется функцией оболочкиcommand_not_found_handle
(см. Раздел «man bash
КОМАНДНОЕ ИСПОЛНЕНИЕ»).Чтобы увидеть, какое поведение определяется этой функцией, вы можете выполнить:
Вы можете изменить используемую программу, переопределив
command_not_found_handle
функцию.В Ubuntu 14.04 LTS кажется, что поведение по умолчанию определяется непосредственно в
/etc/bash.bashrc
:источник