Как правильно написать интерактивную программу оболочки, которая может использовать механизм автозаполнения bash - PullRequest
1 голос
/ 04 октября 2019

(Пожалуйста, помогите мне откорректировать заголовок и теги.)

Когда я запускаю connmanctl, я получаю другое приглашение,

enrico:~$ connmanctl
connmanctl>

и доступны различные команды, например services, technologies, connect, ...

Я бы хотел знать, как эта штука работает.

Я знаю, что в общем случае изменение приглашения может быть простовопрос об изменении переменной PS1. Однако одна только эта вещь (читай "команда connmanctl изменяет PS1 и возвращает) не будет иметь никакого влияния на функциональность командной строки (я все равно буду в том же процессе bash).

Действительно, тот факт, что доступные команды изменены, выглядит для меня как доказательство того, что connmanctl работает все время, когда приглашение connmanctl>, и что при запуске connmanctl, whileцикл вводится с оператором read, за которым следует набор команд, обрабатывающих ввод.

В этом последнем сценарии, который я представляю, нет необходимости даже изменять PS1, так какconnmanctl> строка может быть просто получена echo -n "connmanctl> ".

Причина этого любопытства в том, что я пытаюсь написать оболочку для connmanctl. Я уже написал ее, и она работает какпредполагалось, за исключением того, что я не знаю, как правильно настроить функцию автозаполнения, и я думаю, что для этого мне сначала нужно понять, как правильно написать сценарий интерактивной оболочки.

...