I Bash findes der ikke en direkte ækvivalent til zsh's preexec
funktion. Dog kan man opnå lignende funktionalitet ved at bruge en kombination af Bash's DEBUG
trap og en funktion til at fange kommandoer før de udføres. Her er en trin-for-trin guide til, hvordan du kan gøre dette:
Definér en funktion, der skal udføres før hver kommando:
preexec_function() {
echo "Kommandoen der skal udføres: $BASH_COMMAND"
}
Brug trap
til at fange DEBUG
signalet og kalde din funktion:
trap 'preexec_function' DEBUG
For at sikre, at funktionen kun udføres for interaktive shell-sessioner, kan du tilføje en kontrol for $PS1
:
if [[ $- == *i* ]]; then
trap 'preexec_function' DEBUG
fi
Med disse trin vil preexec_function
blive kaldt før hver kommando, der udføres i en interaktiv Bash-session. Bemærk, at dette kan påvirke ydeevnen, da DEBUG
trap udføres før hver kommando.
Her er et komplet eksempel:
preexec_function() {
echo "Kommandoen der skal udføres: $BASH_COMMAND"
}
if [[ $- == *i* ]]; then
trap 'preexec_function' DEBUG
fi
Dette script kan tilføjes til din .bashrc
fil for at sikre, at det køres hver gang du starter en ny interaktiv Bash-session.