Determine whether a bash script was launched by icon click or from terminal
You can use differences in the return status from tty
to help you.
if tty -s;
then
# running in a terminal
...
fi
(tty -s
runs the tty
command silently)
Exit status:
- 0 if standard input is a terminal
- 1 if standard input is not a terminal
- 2 if given incorrect arguments
- 3 if a write error occurs
Or you could use the shell's built-in tests to check whether standard input/output are from/to a terminal:
if [ -t 0 ]; # stdin
then
# running in a terminal
...
fi