As defined in section Invoking Bash, an interactive shell
is one whose input and output are both
connected to terminals (as determined by isatty(3)
),
or one started with the `-i' option.
To determine within a startup script whether Bash is
running interactively or not, examine the variable
$PS1
; it is unset in non-interactive shells, and set in
interactive shells. Thus:
if [ -z "$PS1" ]; then echo This shell is not interactive else echo This shell is interactive fi
Alternatively, startup scripts may test the value of the `-'
special parameter.
It contains i
when the shell is interactive. For example:
case "$-" in *i*) echo This shell is interactive ;; *) echo This shell is not interactive ;; esac
Go to the first, previous, next, last section, table of contents.