$( )
насправді поводиться так само, саме РНГ цього не робить.
Здається, що zsh RNG вдосконалюється лише після посилання на значення, але не повторно змінюється при розщепленні. Це означає, що допоміжні оболонки просто продовжуватимуть успадковувати старе насіння від материнського, оскільки будь-які зміни, що відбуваються в підшарпі, не впливають на процес батьків. Використання $[…]
не має цієї проблеми, оскільки воно не створює підшару.
Відповідно до zshall(1)
сторінки керівництва:
RANDOM <S>
A pseudo-random integer from 0 to 32767, newly generated each time
this parameter is referenced. The random number generator can be
seeded by assigning a numeric value to RANDOM.
The values of RANDOM form an intentionally-repeatable pseudo-ran‐
dom sequence; subshells that reference RANDOM will result in iden‐
tical pseudo-random values unless the value of RANDOM is refer‐
enced or seeded in the parent shell in between subshell invoca‐
tions.
Тест:
% echo outer=$RANDOM; (echo inner=$RANDOM); (echo inner=$RANDOM);
outer=10246
inner=5606
inner=5606