Puncte:3

Întrebare despre comportamentul bash cu modul non-interactiv

drapel pl

Practic, trebuie să înțeleg următorul comportament:

$ echo $SHELL
/bin/bash
$ bash -c echo $SHELL

bash -c echo $SHELL produce o ieșire goală, iar acest lucru mă încurcă pentru că m-aș aștepta ca SHELL să fie setat. Acest lucru este valabil și pentru $BASH_VERSION.

Poate cineva să-mi explice asta?

Mulțumesc pentru timpul acordat!

Puncte:7
drapel hr

Din man bash:

   -c Dacă opțiunea -c este prezentă, atunci comenzile sunt citite din
             primul argument non-opțiune șir_comandă. Dacă există argumentâ
             După șirul de comandă, primul argument este asâ
             semnat la $0 și toate argumentele rămase sunt atribuite lui
             parametrii poziționali.

În bash -c echo $SHELL, cel „primul argument fără opțiune” este ecou, in timp ce $SHELL este extins de shell-ul interactiv actual și transmis la bash ca parametru de poziție $0. De cand ecou nu are argumente în sine, bash -c ecou afișează un șir gol. Între timp, $0 este setat sa /bin/bash dar ignorat.

În funcție de ceea ce încerci să faci, poți să faci fie

bash -c 'echo $SHELL'

care trece echo $SHELL la fel de șir de comandă la shell-ul bash non-interactiv (prezentând valoarea shell-ului non-interactiv $SHELL), sau

bash -c 'echo $0' $SHELL

care trece (expansiunea) shell-ului interactiv $SHELL la shell-ul bash non-interactiv ca $0, apoi își reia valoarea.

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.