Portál AbcLinuxu, 13. května 2025 10:45
Řešení dotazu:
#!/bin/sh export T_1=testval server.shpak v /proc/pid_of_server.sh/environ uvidis nastavenou T_1 na testval
#!/bin/bash # subshell-test.sh export T_1=testval echo parent shell pid: $$ $BASHPID echo T1: $T_1 ( echo subshell pid: $$ $BASHPID echo T1: $T_1 T_1=inahodnota tr \\0 \\n < /proc/$$/environ |grep T_1 # Inside parentheses, and therefore a subshell . . . for i in 1 2 3 # Endless loop. do echo "Subshell running . . ." sleep 3 echo T1: $T_1 done ) echo T1: $T_1 exit $? # End of script (but will never get here).Mno a tam človek uvidí, že použitie okrúhlych zátvoriek znamená "vytvorenie nového shell-u" ale neznamená vytvorenie "nového procesu". A pri skúmaní /proc/{pid}/environ tiež zistíš, že nastavením premennej sa nezmení "environment blok" procesu. Ten totiž patrí rodičovi. Takže to, že urobíš "export T_1" len znamená, že pod-procesy dostanú zmodifikovaný environment. Viď tiež proc(5) - environ.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.