51 lines
1.9 KiB
Markdown
51 lines
1.9 KiB
Markdown
# Bash configuration
|
|
|
|
This repository owns configuration that is specific to interactive Bash and
|
|
the Bash login sequence.
|
|
|
|
## Responsibilities
|
|
|
|
- Install `~/.bash_profile` and `~/.bashrc` as symlinks into this repository.
|
|
- Make login Bash load the shared `~/.profile` environment before `.bashrc`.
|
|
- Configure Bash history, prompt rendering, completion and command-not-found
|
|
behaviour.
|
|
- Initialize Bash integrations such as NVM, Pyenv, z.lua and gitstatus.
|
|
- Display the startup greeting and cached package status.
|
|
- Display `TODO.md` and `.autonote.md` after successful directory changes.
|
|
- Load common interactive aliases from the `profile` repository.
|
|
|
|
## Boundaries
|
|
|
|
This repository does not own:
|
|
|
|
- Portable login environment variables or shared PATH construction. Those
|
|
belong in the `profile` repository.
|
|
- Common aliases intended for more than one Bourne-family shell. Those belong
|
|
in `profile/aliases.sh`; genuinely Bash-specific aliases may live here.
|
|
- User services, timers or background refresh logic. Those belong in the
|
|
`systemd` repository. Bash may consume their cached output or request a
|
|
non-blocking service start.
|
|
- Secrets, machine credentials or project-specific environment settings.
|
|
|
|
## Startup flow
|
|
|
|
A login Bash reads:
|
|
|
|
```text
|
|
~/.bash_profile -> ~/.profile -> ~/.bashrc
|
|
```
|
|
|
|
A non-login interactive Bash reads only `~/.bashrc` and inherits the login
|
|
environment from its parent process. `.bashrc` returns immediately when the
|
|
shell is not interactive.
|
|
|
|
## Files
|
|
|
|
- `bash_profile`: connects Bash login startup to the shared profile and Bash RC.
|
|
- `bashrc`: interactive Bash configuration.
|
|
- `gitstatus-custom.sh`: prompt integration for gitstatus.
|
|
- `cheat.bash`: completion for `cheat`.
|
|
- `install.sh`: installs the home-directory symlinks and gitstatus dependency.
|
|
|
|
Run `install.sh` when initially installing the repository. It preserves an
|
|
existing destination before creating each symlink.
|