У меня есть сложный механизм, встроенный в мою среду bash, который требует выполнения пары сценариев при создании приглашения, а также когда пользователь нажимает клавишу ввода, чтобы начать обработку команды. Я приведу упрощенное описание:
Ловушка отладки делает это довольно ограниченным способом: она срабатывает каждый раз, когда выполняется оператор.
trap 'echo $BASH_COMMAND' DEBUG # example only
К сожалению, это означает, что когда я набираю это:
sleep 1; sleep 2; sleep 3
вместо обработки $ BASH_COMMAND, содержащей всю строку, я получаю три сна в трех разных ловушках. Еще хуже:
sleep 1 | sleep 2 | sleep 3
запускает все три при настройке канала - еще до того, как сон 1 начнет выполняться, выходные данные могут привести вас к мысли, что сон 3 запущен.
Мне нужен способ выполнить скрипт в самом начале, обрабатывая всю команду, и я бы предпочел, чтобы он не запускался при запуске команды приглашения, но я могу справиться с этим, если нужно.