Bash script: consenti il ​​cambio di "ambiente / identità"


0

Mi sono imbattuto più volte in questo problema e vorrei trovare un modo per automatizzare / scrivere queste cose che comporta un cambiamento di identità o ambiente (non sono sicuro di come chiamarlo con precisione).

Un semplice esempio potrebbe essere uno script in cui una parte deve essere eseguita su. ( make installad esempio). Per raggiungere questo obiettivo si potrebbe usare sudo. Tuttavia, ci sono altri cambiamenti nell'ambiente che non dispongono di tale soluzione di escape. Probabilmente ben noto è il python virtualenv in cui si può facilmente immaginare una sceneggiatura simile

source virtEnv/bin/activate
python myScript.py

o semplicemente una sceneggiatura che invoca screen. Ora sto compilando gstreamer che vorrei automatizzare in uno script, perché dovrò distribuire questa installazione in molti altri computer in seguito

for i in gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-python gnonlin gst-ffmpeg 
do
   gst-head
   cd ./$i
   git checkout tags/1.1.1
   ./autogen.sh
   make -j7
   exit
done

Dov'è gst-headlo gst-uninstalledscript che carica un pkg_config locale (se ho ragione) e mi mette in un ambiente separato. Se lo metto in uno script, lo script interromperà la sua esecuzione lì e continuerà una volta fatto exitda quell'ambiente.


Non sono sicuro di quale sia il tuo problema qui. Non makeviene eseguito? Cosa non funziona nello script che hai pubblicato?
terdon,

Risposte:


0

Quell' "ambiente" in cui lo script "ti mette" è in realtà una nuova istanza della tua shell. E invece di chiamare semplicemente gst-head senza un parametro, dovresti passare i comandi come argomenti! Riesci a vedere questa parte nella sceneggiatura?

# if we got a command, run it, else start a shell
if test ! -z "$1";
then
  $@
  exit $?
fi

Penso che dovresti provare a farne uso. A proposito, se vuoi avviare una shell a tutti i costi, non sarai in grado di interagire con essa a meno che tu non lo usi, in qualche modo (uno script di previsione autonomo o incorporato in uno script di shell).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.