Интересный вопрос. Обратите внимание, что это эквивалентно запуску:
bash -c "bash -c 'bash -i -l' &"
в командной строке. Я получил тот же результат просто работает:
bash -c "bash -i &"
Довольно уверен, Что происходит это Bash опрашивает пытается получить доступ к терминалу управления (потому что его пытается быть интерактивным), но его не допускается (becuase его фоновый процесс). Я попробовал запустить bash -c 'strace -o bash_trace.txt bash -i &'
. Его делает это в цикле:
...
rt_sigaction(SIGTTIN, {SIG_DFL, [], 0}, {SIG_IGN, [], 0}, 8) = 0
kill(0, SIGTTIN) = 0
--- SIGTTIN (Stopped (tty input)) @ 0 (0) ---
rt_sigaction(SIGTTIN, {SIG_IGN, [], 0}, {SIG_DFL, [], 0}, 8) = 0
ioctl(255, TIOCGPGRP, [9964]) = 0
rt_sigaction(SIGTTIN, {SIG_DFL, [], 0}, {SIG_IGN, [], 0}, 8) = 0
kill(0, SIGTTIN) = 0
--- SIGTTIN (Stopped (tty input)) @ 0 (0) ---
rt_sigaction(SIGTTIN, {SIG_IGN, [], 0}, {SIG_DFL, [], 0}, 8) = 0
ioctl(255, TIOCGPGRP, [9964]) = 0
rt_sigaction(SIGTTIN, {SIG_DFL, [], 0}, {SIG_IGN, [], 0}, 8) = 0
kill(0, SIGTTIN) = 0
--- SIGTTIN (Stopped (tty input)) @ 0 (0) ---
...
процессы получают SIGTTIN, когда они пытаются получить доступ к управляющему терминалу, но они в фоновом режиме - http://www.lindevdoc.org/wiki/SIGTTIN. Я не знаю, подходит ли правильное поведение, подобное этому.
Я не знаю, но какова цель '' bash -c'? –