Почему подоболочка интерактивной оболочки работает как интерактивная оболочка? - PullRequest
0 голосов
/ 15 сентября 2018

В сеансе Bash я запускаю эту команду:

(echo $$ $BASHPID $-)

и получаю

22108 25602 himBH

Итак, моя подоболочка работает как интерактивная оболочка.

Если я пытаюсь запустить ту же команду в фоновом режиме

(echo $$ $BASHPID $-) &

, я получаю тот же вывод.Почему подоболочка работает как интерактивная оболочка?

1 Ответ

0 голосов
/ 15 сентября 2018

подоболочка наследует все характеристики родительского элемента, включая настройки. Это часть определения подоболочки. Не имеет значения, работает ли он на переднем или заднем плане - задания можно легко поменять между передним и задним планом.

Non-subshell не будет интерактивным. Например, если я поставлю

(echo $$ $BASHPID $-)

в сценарий с именем gash.sh и вызов его из неинтерактивной оболочки:

$ bash gash.sh
73879 73880 hB

Но если я получу исходный файл, то это будет оболочка интерактивной оболочки:

$ . ./gash.sh
1130 himBH
...