Za pomocą powłoki bash możesz zainstalować pułapkę na syntetycznym DEBUG
sygnale. Jest to przydatne i spowoduje wykonanie funkcji lub fragmentu kodu przy każdym poleceniu powłoki. Na przykład:
$ trap 'logger -t shell "${BASH_COMMAND}"' DEBUG
Chodzi o to, aby zainstalować pułapkę na przykład w upuszczonym pliku /etc/profile.d/bash-logger
i aby polecenia sesji powłoki użytkownika były automatycznie logowane do syslog, gdy tylko się pojawią. Jest to również przydatne do łatwego śledzenia poleceń zdalnych .
Patrząc na kod źródłowy powłoki Dasha, wydaje mi się, że rozumiem, że taki DEBUG
sygnał nie jest dostępny.
Czy są jakieś obejścia lub alternatywy, aby osiągnąć ten sam wynik z powłoką deski rozdzielczej?
eval "$line"
eval <command>
i anulowałem niewłaściwą część, to się zdarza ... oczywiście, jeśli nie chcesz wymuszać na skrypcie używania poleceń na dysku zamiast aliasów / funkcji ...◉‿◉
/etc/profile.d/bash-logger
i automatycznie rejestrować wszelkie polecenia sesji powłoki użytkownika w syslog.
while read -r line; do logger -t shell "$line"; command "$line"; done < myscript.sh
? Jeśli to działa, mogę dodać więcej linii w odpowiedzi.