Prompt
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:
- Use
set -exinstead of justset -eto output commands as they execute for better debugging - Default to safe behaviors and require explicit conditions for potentially risky operations (e.g., defaulting to dev releases and opting into stable releases only on exact matches)
- Preserve directory state using
pushd/popdinstead ofcdwhen temporary directory changes are needed - Document supported configuration values and their behaviors clearly
Example 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.