Puncte:-3

este o idee bună să folosiți „sudo bash -c” în loc de „sudo” pentru totdeauna?

drapel kz
tmp

În primul rând, vorbim doar despre sistemul de operare Debian/Ubuntu.

În al doilea rând, vorbim despre un utilizator non-root cu privilegii sudo numai.



Deci întrebarea este,

Există vreo ocazie pe care nu o puteți folosi sudo bash -c 'comanda' doar daca comanda sudo ?

este o idee bună de folosit sudo bash -c în loc de sudo pentru totdeauna?

drapel hr
Vot închide această întrebare deoarece a fost pusă pe mai multe site-uri: [este o idee bună să folosiți âsudo bash -câ în loc de âsudoâ pentru totdeauna?](https:/ /unix.stackexchange.com/questions/666213/is-it-a-good-idea-to-use-sudo-bash-c-instead-of-sudo-forever)
tmp avatar
drapel kz
tmp
@steeldriver Îmi pare rău pentru asta, sunt nou pe aici, am fost atât de confuz încât site-ul căruia ar trebui să aparțină întrebările mele, este întotdeauna atât de greu să fac o alegere corectă pentru mine. dar se pare că tocmai am primit „răspunsul”.
guiverc avatar
drapel cn
De asemenea, rețineți că acesta este un site Ubuntu, pentru Ubuntu și aromele *oficiale* ale Ubuntu (adică https://ubuntu.com/download/flavours), așa că utilizarea Debian v-a scos din punct de vedere al acestui site. Mulți dintre noi ar putea *iubește* și *utilizam* Debian, dar ar trebui să rămâneți în conformitate cu regulile site-ului (poate accesați acest site folosind SSO/signon Ubuntu, dar este un site Stack Exchange, așa că întrebările nu ar trebui să fie puse pe alte site-uri SE )
Puncte:1
drapel cw

Dacă nu utilizați bash, atunci bash -c rulează comanda cu bash, și comanda sudo rulează comanda cu shell-ul tău.

Dacă utilizați bash, atunci bash -c creează o altă lovitură pentru a rula scriptul, ceea ce poate cauza probleme cu variabilele.

Încercați acest exemplu

S=2
eco $S
bash -c echo $S

Veți obține rezultate diferite!

tmp avatar
drapel kz
tmp
Mulțumesc pentru exemplul tău bun, îmi amintește doar de citatul```"```, de obicei folosim ```bash -c "echo $S" ``` cu ghilimele și, de fapt, am aceeași rezultate în acest caz de asemenea.
Shu Shang avatar
drapel cw
Ei bine, nu folosiți versiunea bash -c nu vă va face niciun rău și nu vă va cauza probleme de a cita, ceea ce, dacă se întâmplă să uitați, poate provoca dezastru.
bac0n avatar
drapel cn
@ShuShang nu sunt sigur ce încerci să descrii, `-c` preia un 'șir de comandă' și, orice argument următor va fi alocat ca parametri de poziție începând de la `$0`, în acest caz, `$S` va deveni `$0 ` care este folosit ca nume al scriptului, de exemplu, `bash -c nonexistent $S` vă va oferi `2: line 1: nonexistent: command not found`.
bac0n avatar
drapel cn
@tmp în cele mai multe cazuri, ar trebui să utilizați ghilimele simple, sau `$S` va fi extins de shell-ul curent înainte ca `bash -c` să interpreteze șirul de comandă. Un construct general ar putea arăta ceva de genul: `bash -c 'echo "$@"' my-bash 1 2 3 4`.
tmp avatar
drapel kz
tmp
@bac0n Dar încă nu știu de ce, în acest exemplu de mai sus, numai bash -c " echo $S " sau bash -c " echo " $S " " sau bash -c " echo " $S " " vor funcționa, obține aceleași rezultate ca echo $S = 2, asta ar fi o altă întrebare a mea, pentru ce sunt exact ghilimelele din bash -c? Efectuează direct comanda din interiorul lor?

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.