Jak debugować zakończenia bash?

12

Utworzyłem niektóre funkcje uzupełniania bash, które wydają się działać w oderwaniu, ale dają mi nieoczekiwane wyniki, gdy próbuję uzupełnić je tabulatorem.

Czy można podłączyć bashdb, a następnie spróbować tabulować dokończyć coś i przejść do debugowania i ustalić, co się dzieje?

Dan Midwood
źródło
2
Aby dodać moje do centów: powinieneś użyć set -xin bash do debugowania swoich skryptów. Użyj, set +xaby wyłączyć.

Odpowiedzi:

4

set -x

Jeśli jesteś set -xw sesji interaktywnej lub w samym skrypcie autouzupełniania, (prawie?) Każde polecenie i jego wyniki zostaną wydrukowane. Obejmuje to pracę wykonaną w skrypcie autouzupełniania.

Można to następnie ponownie wyciszyć za pomocą set +x.

-x

Po rozwinięciu każdego prostego polecenia dla polecenia, przypadku, polecenia wyboru lub arytmetyki dla polecenia wyświetl rozwiniętą wartość PS4, a następnie polecenie i jego rozwinięte argumenty lub powiązaną listę słów.

-z instrukcji Bash # Wbudowany zestaw

Christopher Peterson
źródło
2

Wystarczy zalogować / wyprowadzić z funkcji uzupełniania bash; ponieważ najprawdopodobniej nie są nauką o rakietach, powinno to być dość łatwe. Możliwe, że można podłączyć bashdb, ale wydaje się to niepotrzebne ...

Tamara Wijsman
źródło
Podłączenie bashdb byłoby znacznie prostsze i, jak się spodziewam, szybsze niż dodawanie instrukcji dziennika do skryptów. Nie wiem jednak, czy jest to możliwe, a brak odpowiedzi sugerowałby, że tak nie jest. Udało mi się rozwiązać problem, logując stan do pliku takiego, jak sugerujesz, ale przesyłanie informacji rejestrowania do terminala nie jest pomocne podczas pracy z zakończeniami.
Dan Midwood
3
@DanMidwood: Użyj dwóch terminali (np. Screen + split). W jednym uruchom uzupełnianie, w drugim tail -fdziennik.
choroba
@choroba: Nicea. : D
Tamara Wijsman