2015-04-21 6 views
0

Мне нужна команда, которая должна быть выполнена до того, как оболочка начнет выполнение переданной пользователем команды, я попытался использовать ловушку с сигналом DEBUG, но этого не произошло.Как заставить оболочку выполнить команду перед каждой командой ввода пользователя

Я зарегистрировал ловушку в/etc/profile.

ловушка 'эхо "my_command"' DEBUG

Что происходит сейчас:

SW0: корень: корень> PWD

/корень

my_command

sw0 : Корень: корень>

Что я хочу:

SW0: корень: корень> PWD

my_command

/корень

SW0: корень: корень>

Версия Bash Использована

GNU Баш, версия 2.04.0 (1) -release (PowerPC-неизвестно-Linux-гну)

Я хочу, чтобы моя команда должна быть выполнена перед каждой командой, введенной пользователем в shell, как я могу это сделать?

Пожалуйста, помогите мне в этом, я пробовал много поискового запроса, но это не помогает.

+0

Это пахнет [проблема XY] (http://mywiki.wooledge.org/XyProblem). Что вы действительно пытаетесь достичь? –

ответ

1

Вы, вероятно, ищете что-то вроде PROMPT_COMMAND:

Содержимого этого переменного выполняются как обычные команды Bash как раз перед Bash отображает подсказку.

+0

Нет, мне нужно , которое должно быть выполнено до того, как оболочка начнет выполнение команды, переданной пользователем. PROMPT_COMMAND выполняется оболочкой после выполнения команды, переданной пользователем. В вышеприведенном случае перед выполнением shell «pwd» он должен выполнить «my_command» – user3446120

+0

'PROMPT_COMMAND' выполняется, когда Bash отображает приглашение, которое * перед * пользователь вводит команду. –

0

Мой пример

function preexec() { 
    echo "Preexec command" 
} 

trap 'preexec' DEBUG 

Результат

# pwd 
Preexec command 
/home/robert 
+0

Я использую эту версию оболочки «GNU bash, версия 2.04.0 (1) -release ", согласно man-странице этой версии PROMPT_COMMAND выполняется после ввода пользователя. – user3446120

+0

Извините, я думаю, что нет способа, как это сделать :( –