Updated: 03 May 2023
see https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
Start subshell with -x option, which will run the entire script in debug mode. Traces of each command plus its arguments are printed to standard output after the commands have been expanded but before they are executed.
bash -x script1.sh
Debugging can be activated for a portion of the script
set -x # activate debugging from here
call_my_func
set +x # stop debugging from here
Other useful bash options
Short notation | Long notation | Result |
---|---|---|
set -v | set -o verbose | Prints shell input lines as they are read. |
set -x | set -o xtrace | Print command traces before executing command. |
Alternatively, these modes can be specified in the script itself, by adding the desired options to the first line shell declaration. Options can be combined, as is usually the case with UNIX commands
#!/bin/bash -xv
Examples of using echo for debugging
echo "debug message: now attempting to start w command"; w
echo "Variable VARNAME is now set to $VARNAME."