Puncte:3

Cum pot vedea stdout / stderr din shell-ul de conectare bash?

drapel cn

Încerc să depanez o problemă ciudată cu mine ~/.bash_profile, și aș dori să pot vedea dacă există erori / etc imprimate când este rulat. Există vreun jurnal sau așa ceva undeva care conține stdout și/sau stderr al procesului de conectare shell? Mulțumiri!

muru avatar
drapel us
Dacă există, de obicei, acestea ar fi tipărite în terminalul în care ați rulat acel shell.
stumblebee avatar
drapel mx
@muru Am crezut acelasi lucru, am creat o eroare in `~/.profile` fara sa existe `~/.bash_profile` , mesajul de eroare nu a trecut. Verificați răspunsul meu neșters.
muru avatar
drapel us
Noile file de terminale @stumblebee nu vor rula shell-uri de conectare decât dacă vă configurați emulatorul de terminal în acest fel
stumblebee avatar
drapel mx
@muru Aveți absolut dreptate domnule! ~./.bashrc face, dar ~/.profile nu. Ar fi trebuit să rulez `sudo login`. Mă voi reduce la răspunsul meu inițial și voi elimina rușinea.
vanadium avatar
drapel cn
Ai putea sursa fișierul în terminalul tău curent: `source .bash_profile`
sancho.s ReinstateMonicaCellio avatar
drapel pl
Bună. Aveți vreun feedback cu privire la ceea ce a fost sugerat? Este esențial pentru comunitate.
Puncte:0
drapel mx

stdout și stderr va apărea în terminal de fiecare dată când vă autentificați.Trebuie să vă deconectați și să vă reconectați din nou pentru ca modificările din profilul dvs. să aibă efect. O explicație suplimentară a utilizării ~/.bash_profile este furnizat Aici pe Întrebați Ubuntu cu un răspuns bun

Puncte:0
drapel cn

Tbh nu am încercat eu, dar sunt destul de sigur că ieșirea standard și eroarea sunt terminalul pe care rulează, de îndată ce procesul începe. Puteți verifica prin introducerea unei comenzi precum ecou „Salut lume” în dumneavoastră .bash_profile...

Puncte:0
drapel pl

Pentru a depana un script bash aveți mai multe opțiuni, iar unele dintre acestea sunt chiar mai eficiente decât redirecționarea stdout/stderr.

Activati urmă

Ați putea adăuga la dvs ~/.bash_profile (crearea unei urme numai pentru anumite părți ale scriptului dvs.) cu

set -x # activează depanarea de aici
<comenzi>
setați +x # opriți depanarea de aici

De asemenea, set -v imprimă linii de intrare shell pe măsură ce sunt citite și set +v dezactivează acest lucru. Numai cu aceasta veți înțelege problema.

Urmă de redirecționare

Utilizare Variabila Bash BASH_XTRACEFD

Dacă este setat la un număr întreg care corespunde unui descriptor de fișier valid, Bash va scrie rezultatul de urmărire generat atunci când âset -xâ este activat la acel descriptor de fișier. Acest lucru permite ca rezultatul urmăririi să fie separat de mesajele de diagnostic și de eroare. Descriptorul de fișier este închis când BASH_XTRACEFD este dezactivat sau i se atribuie o nouă valoare. Dezactivarea BASH_XTRACEFD sau atribuirea șirului gol determină trimiterea ieșirii de urmărire la eroarea standard. Rețineți că setarea BASH_XTRACEFD la 2 (descriptorul fișierului de eroare standard) și apoi dezactivarea acestuia va duce la închiderea erorii standard.

Deci ai folosi

exec 5> ~/bash_profile_ouput.txt
BASH_XTRACEFD="5"
<comenzi>
dezactivați BASH_XTRACEFD

Tipăriți numerele de rând

Utilizare Variabila Bash LINENO (și BASH_LINENU, BASH_SOURCE și/sau FUNCNAME în cazuri mai elaborate)

echo „Se execută ${LINENO}”
<comenzi>

Redirecționează stdout/stderr

Combina comanda exec cu redirecționare și, eventual tricou. Vezi raspunsuri Aici, care includ și alte metode/„trucuri” decât utilizarea exec.

Legate de:

  1. https://stackoverflow.com/questions/44249890/pipe-bash-stdout-only-in-debug-mode
  2. https://unix.stackexchange.com/questions/334382/find-out-what-scripts-are-being-run-by-bash-on-startup
  3. https://unix.stackexchange.com/questions/155551/how-to-debug-a-bash-script

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.