Configure shell scripts with defensive practices to ensure reliability and debuggability. Use appropriate set
options for error handling and debugging, implement safe defaults that require explicit opt-in for risky operations, and preserve execution state when changing directories.
Key practices:
set -ex
instead of just set -e
to output commands as they execute for better debuggingpushd
/popd
instead of cd
when temporary directory changes are neededExample of defensive directory handling:
# Instead of:
cd "${PROJECT_PATH}"
pipenv install
# Use:
pushd "${PROJECT_PATH}"
pipenv install
popd
This approach prevents unintended side effects on subsequent script execution and makes scripts more predictable in different environments.
Enter the URL of a public GitHub repository