the «tty» command says «not a tty» if you're in the background, or gives the controlling terminal name (/dev/pts/1 for example) if you're in the foreground. A simple way to tell.
~> cat test.sh
#!/bin/bash
echo `tty` > test.txt
~> cat test1.sh
#!/bin/bash
./test.sh &
~> cat test.txt
not a tty
Интересно, никому так и не надоело отвечать, не подумав над вопросом?
tty показывает, запущен ли скрипт, когда включён 'job control',
управление заданиями, и не более.
В общем случае узнать, как тебя запустили, нет.
Когда-нибудь, кто-нибудь, как-нибудь научится думать?
'a ; echo ${?}' и 'a & ; wait ${!} ; echo ${?}' не отличаются ничем, кроме
реакции на сигналы, в sh, bash и т.д.
Всё остальное тем более варьируется.