2015-04-17 17 views
1

У меня есть сценарий оболочки, где PROMPT_COMMAND установлен в функцию. Насколько я знал, PROMPT_COMMAND будет выполнен перед отображением следующего приглашения, указанного PS1 (пожалуйста, поправьте меня, если я ошибаюсь).PROMPT_COMMAND не выполняется, прежде чем переходить на перезагрузку

Существует случай, когда моя система переходит на перезагрузку даже до появления следующего приглашения, поэтому PROMPT_COMMAND не выполняется для этого случая.

Мне нужна функция, указанная PROMPT_COMMAND для выполнения, даже если приглашение не отображается, есть ли в любом случае я мог бы это сделать?

Мой PROMPT_COMMAND записи входных данных пользователем, подобно истории

Я новичок раскошеливаться так, пожалуйста, помогите мне в этом.

Платформа: Embedded платформы код не может быть общим

+0

Что делает ваш 'PROMPT_COMMAND' сделать это так важно, он должен быть запущен, даже если система выключается до оболочки может напечатать следующую строку ? –

+0

My PROMPT_COMMAND записывает историю входных команд, выполняемых пользователем. – user3446120

+0

Вы имеете в виду как обычную встроенную функцию истории оболочки? Выполнение этого на 'PROMPT_COMMAND' времени - странное место для такого рода вещей. –

ответ

1

No.

Значение переменной PROMPT_COMMAND проверяется непосредственно перед Bash печатает каждый первичный проворная

https://www.gnu.org/software/bash/manual/bashref.html#Controlling-the-Prompt

Что бы вы ни пытались сделать, вам нужно найти другую w и сделать это.

+0

Есть ли способ обнаружить в оболочке, когда система переходит на перезагрузку, как и любые заданные переменные? – user3446120

+0

Нет. Оболочка выйдет, когда система опустится. В зависимости от того, как это происходит, оболочка не может получить шанс выйти изящно. –

+0

OK, могу ли я узнать, что текущая команда выполняется из shell ?, есть ли какая-либо переменная, например PROMPT_COMMAND? – user3446120

0

Вы пытались установить ловушку оболочки?

function my_exit_hook() { 
    clilog "Shell exiting" # Or whatever. 
} 
trap my_exit_hook EXIT TERM 

Для чего это стоит, я поддерживаю регистратор истории команд с открытым исходным кодом, который уже делает что-то очень похожее. https://github.com/barabo/advanced-shell-history

Вы можете сослаться на мои конкретные примеры ловушки здесь: https://github.com/barabo/advanced-shell-history/blob/82f9a92650040ed12a6cad511108396fa9a28dbe/shell/common#L86

Смежные вопросы