Puncte:0

Cum să scrieți un script shell care va reîncărca terminalul la mijlocul scriptului și apoi va începe să utilizați din nou comenzi?

drapel pk

Am știut recent despre sdkman în gitpod.io și vreau să instalez diferite versiuni de java folosind acest manager. Dar am o versiune foarte veche de sdkman. Asta trebuie să-l actualizez, apoi să instalez java. Dar nu vreau să introduc aceste comenzi în fiecare depozit din gitpod. De aceea am scris un script shell premise.sh și voi folosi acest fișier în fiecare depozit. Scenariul este: -

actualizare sdk
sdk instalează java 17-open

# există o mulțime de comandă sub aceasta, dar nu sunt necesare în această întrebare.

Dar apoi am știut că, după actualizarea sdkman, trebuie să repornesc terminalul. am gasit asta exec bash repornește terminalul. Dar când adaug exec bash în scriptul meu shell, nu execută comenzile de mai jos exec bash comanda. Poate cineva să-mi sugereze, cum să fac asta?

actualizare sdk
exec bash #adăugat recent, dar nu execută comenzile după el :(
sdk instalează java 17-open
rajin100000 avatar
drapel pk
Cum ma poate ajuta??
Puncte:0
drapel cn

Problema pe care o întâmpinați este că atunci când deschideți un nou shell sau reporniți shell-ul curent, scriptul dvs. nu va mai fi încărcat în noul shell. Deci, ceea ce trebuie să faci este:

  1. Deschideți shell-ul părinte
  2. Executați prima comandă
  3. Creați un shell copil în scriptul părinte
  4. Acest shell copil va fi încărcat cu noii parametri de mediu
  5. Executați a doua comandă în shell-ul copil
  6. Ieșiți din carcasa copilului
  7. Ieșiți din shell-ul părinte

Pentru comenzile menționate mai sus, puteți folosi ceva de genul acesta.

#!/bin/bash
actualizare sdk
sudo su - $USER -c 'sdk install java 17-open'

Prima comandă va rula în shell-ul părinte. A doua linie (cu sudod su - $USER) va deschide un nou shell copil în cadrul aceluiași script și va executa a doua comandă.

PS: Vi se va cere să introduceți parola, dacă nu ați configurat „NOPASSWD” pentru sudo. Verifica acest pentru a configura asta.

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.