Portál AbcLinuxu, 5. listopadu 2025 01:35
Řešení dotazu:
FOO=1 & nenstaví proměnnou FOO v aktuálním shellu.)
Není nad to, když si člověk přijde na řešení sám :)
Kdybyste chtěl vědět, proč zrovna takhle to bash dělá, doporučuji zeptat se jeho autorů.
.-----------------.-----.------.
| cmd | ash | bash |
+-----------------+-----+------+
| sleep 60 & | 1x | 1x |
| (sleep 60) & | 2x | 1x |
| { sleep 60; } & | 1x | 2x |
'-----------------'-----'------'
Výsledky jsou překvapivé. Pokud nechceme spouštět zbytečně sub-shehll v sub-shellu, pak závorky takto raději nepoužívat, nedá se na to v různých shellech spoléhat (viz můj dotaz a (sleep 60)& , kdy mi to v bashi prošlo ). Proč bash spustí 2x sub-shell v případě složených závorek je mi zatím záhadou.
.-----------------.-----.------.
| ext prg | ash | bash |
+-----------------+-----+------+
| sleep 60 & | 0x | 0x |
| (sleep 60) & | 1x | 0x |
| { sleep 60; } & | 0x | 1x |
'-----------------'-----'------'
.---------------------------.-----.------.
| more ext prg or pipe | ash | bash |
+---------------------------+-----+------+
| (sleep 30; sleep 30) & | 2x | 1x |
| { sleep 30; sleep 30; } & | 1x | 1x |
'---------------------------'-----'------'
.-----------------.-----.------.
| f() {sleep 60} | ash | bash |
+-----------------+-----+------+
| f & | 1x | 1x |
| (f) & | 2x | 1x |
| { f; } & | 1x | 1x |
'-----------------'-----'------'
.-----------------.-----.------.
| builtin cmd | ash | bash |
+-----------------+-----+------+
| read i & | 0x | 0x |
| (read i) & | 1x | 1x |
| { read i; } & | 0x | 0x |
'-----------------'-----'------'
Snad už je tedy vše správně, začíná mi z toho pozorování subshellů a subprocesů jít hlava kolem.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.