Bash script exit on error (set -e) closes putty SSH session
How are you running the script? The circumstances of a subprocess's exit shouldn't affect the shell that ran it... unless you're sourcing the script into your running shell.
For example...
./my-script.sh # this should terminate and leave your shell intact
. my-script.sh # this might terminate and take your shell with it
A 'nix shell is a running process of some shell interpreter (e.g., bash
, ksh
, csh
). "source"ing a script (which you can do in bash
with the command source
or its alias .
) tells that interpreter to open the indicated file and process its contents. In effect, the script becomes a shortcut for entering commands interactively. Functions defined, variables set, and (in your case) exit
s processed take effect in the original shell.
./my-script.sh
is a simple file path. ./
refers to the current directory and my-script.sh
to a script within that directory. When the file is marked as executable, the file will be executed. In the case of a script, this means launching a new interpreter process (as defined by the #!
line at the top of the script, or /bin/sh
by default) and using it to interpret the script. Functions defined, variables set, and exit
s processed are confined to that new interpreter process.