Изпълнението на bash скрипт във фонов режим с активиран контрол на заданието и затворен stdin ще излезе от обвивката PARENT. Как може да стане това?
За да демонстрирате, направете това background_bash_script
:
#!/bin/bash
set -m
ruby -e "puts :here"
След това го стартирайте в bash - той ще излезе от обвивката, в която сте го изпълнили. Командата ruby няма значение, въпреки че изглежда, че трябва да е команда, а не вграден bash (например awk --version
работи, но true
не). За да видя по-добре, го пуснах в още един екземпляр на bash. Цялата сесия изглежда така.
parent: PS1='child: ' bash
child: ./background_bash_script <&- &
[1] 3893
child: here
exit
parent:
Объркващо!
trap exit CHLD
в даден момент? :) - person dannysauer   schedule 04.09.2013