====== BASH - Check if bash is running in interactive mode ====== if [[ $- == *i* ]] then do_interactive_stuff fi if [ "$-#*i" == "$-" ]; then ... fi **NOTE:** According to **man bash**: * PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state. ---- ====== Check if standard input is a TTY ====== if [ -t 0 ] ; then echo stdin is a terminal ..... fi or if [ -t 1 ] ; then echo stdout is a terminal fi **NOTE:** **-t FD** is True if FD is opened on a terminal. Portable between shells. ---- ===== Examples ===== bash <<< 'test -t 0 && echo Y || echo X writes X bash -c 'test -t 0 && echo Y || echo X writes Y **NOTE:** This also verifies that the standard input is a TTY; although it can be related but it is NOT the same as the shell's interactive mode, which is requested and indicated by shell's "-i" flag. ----