Environment Setup Automation Lab
Planning allowance: 2–3 hours inside Module 2. Output: a minimal config, reconstruction checklist and observed before/after transcript. This rehearsal changes a disposable file and a child shell, not your personal startup files. Git tracking is added in Module 3; link the existing artifact then.
1. Create the small configuration
In a new disposable folder, create practice-config.sh with your editor:
export LAUNCHPAD_LABEL='practice'
alias launchpad_here='pwd'
Save and reopen it. Explain both lines: one variable is exported to children; one alias belongs to the current shell. The name is specific to the exercise. Record your shell and editor versions and the folder structure. Keep credentials and personal configuration out of this fixture.
2. Load it in an isolated interactive Bash
In that folder, start a child shell. Run each line separately:
bash --noprofile --norc
source ./practice-config.sh
printf '%s\n' "$LAUNCHPAD_LABEL"
launchpad_here
sh -c 'printf "%s\n" "$LAUNCHPAD_LABEL"'
Expect practice, the current folder, and practice. Bash's startup-suppression flags avoid automatically loading your personal Bash startup files; inherited environment variables still exist. This is not a security sandbox or a pristine virtual machine. The explicit source loads the file into this child shell. A separate sh inherits the exported value, not the alias.
3. Observe and undo live state
While the child Bash is running, open practice-config.sh in your editor and remove only its alias line; keep the export. Save it. Back in the child shell:
source ./practice-config.sh
alias launchpad_here
unalias launchpad_here
alias launchpad_here
unset LAUNCHPAD_LABEL
exit
The first alias inspection still shows the old definition: reloading did not undo it. The second reports that the alias is absent and returns a nonzero status. unset removes the practice variable from this child. exit returns to the original terminal shell. Do not run this drill by deleting real settings from your personal startup file.
4. Rebuild and explain the boundary
Restore the original two-line fixture from your documented setup steps. Start another child Bash, source the fixture, verify its behavior and exit. Then copy the fixture and checklist into a second disposable directory and repeat there. This proves you can reproduce the small configuration; it does not prove that every tool on a new machine is configured.
Write down which startup file your actual shell uses and whether the terminal starts a login shell. Interactive non-login Bash normally reads ~/.bashrc; login Bash reads a profile file. Interactive zsh uses .zshrc in its configured startup directory. Loading the wrong shell's file is not a general fix. You may keep the core rehearsal isolated; modifying your real setup is optional.
Completion and calibration
Require all: saved two-line config; predicted and observed export behavior; alias surviving file deletion/reload; explicit removal; successful reconstruction in a new child and directory; and an explanation of the real-shell startup distinction. Keep the original and corrected transcript. A screenshot of a customized prompt without these checks is insufficient. On failure, repair the specific state transition and repeat on a fresh fixture.
The setup checklist satisfies the bootstrap requirement; a package installer, symlink installer, second machine and remote account are optional. After Module 3, track the fixture and checklist with Git before completing the Launchpad project. Never copy secrets into that repository.
Source for the Bash startup distinction: GNU Bash startup files.