Environment Variable
A named value in a process's environment, inherited by its children — the standard configuration channel.
An environment variable is a name-value pair held in a process's environment and inherited by every process it spawns. It is the lowest-common-denominator configuration mechanism: available in every language, on every platform, and requiring no file format.
Its defining property is inheritance, which is also the source of most of its confusions. A variable set in one shell is invisible to another. A variable set at the session-manager level is inherited by everything, including things launched years later, which is how a stale credential set once can override a properly configured one indefinitely with no file anywhere to explain it. When a tool reports using the wrong identity, the first question is which source it actually read: an environment variable almost always takes precedence over a stored credential.
Two further points. The absence of a required variable should be fatal, not defaulted; see Fail Fast and Defensive Default. And making a variable required has a wide blast radius — every entry point that lacks it will now fail, including the ones nobody thinks about: the test configuration, the container image, the provisioning script, and the code-generation step in continuous integration.
Directory-scoped environment loaders make per-project variables ergonomic, which is how one machine can hold several isolated configurations for the same tool.
See also11
Dotfiles
A tracked repository of personal configuration, making a machine setup reproducible.
Systems & Tooling17 connections
XDG Base Directory Specification
A convention placing configuration, data, cache, and state in defined directories rather than the home directory.
Systems & Tooling11 connections
Terminal User Interface
An interface rendered as text in a terminal, and the design conventions that make command-line tools humane.
Graphics & Rendering16 connections
Shell
The interactive command interpreter, and a programming language with unusually sharp edges.
Systems & Tooling24 connections
Secret Management
Storing, distributing, and rotating credentials without embedding them in code or history.
Systems & Tooling33 connections
Containerization
Packaging an application with its dependencies into an isolated, reproducible runtime unit.
Systems & Tooling33 connections
Least Privilege
Granting only the permissions actually required, so a compromise has a small ceiling.
Systems & Tooling38 connections
Silent Failure
A failure that produces no signal, so the absence of an error reads as success.
Method73 connections
Gitignore
The file of patterns telling Git which files to leave untracked, such as build output, dependencies, editor clutter, and local secrets, along with the traps of files that were already tracked and secrets already committed.
Version Control & Delivery12 connections
Command-Line Interface
Operating a computer by typing commands and reading text replies, the interface inherited from teletypes that remains the fastest, most scriptable, and least discoverable way to control software.
Systems & Tooling14 connections
Shebang
The "#!" line at the top of a script that tells the kernel which interpreter should run it, so a text file can be executed like a compiled program, and the portability traps around it.
Systems & Tooling11 connections
Linked from22
- ANSI Escape CodeSystems & Tooling
The in-band byte sequences, starting with the escape character, that tell a terminal to move the cursor, change color, or clear the screen, inherited from 1970s video terminals and still how every command-line tool draws.
- Build CacheVersion Control & Delivery
Reusing the outputs of build and test steps whose inputs haven't changed, keyed by a hash of those inputs, so large codebases build in minutes instead of hours.
- Command-Line InterfaceSystems & Tooling
Operating a computer by typing commands and reading text replies, the interface inherited from teletypes that remains the fastest, most scriptable, and least discoverable way to control software.
- ContainerizationSystems & Tooling
Packaging an application with its dependencies into an isolated, reproducible runtime unit.
- CronSystems & Tooling
Time-based scheduling of recurring jobs, and the reasons scheduled jobs quietly stop working.
- Defensive DefaultMethod
A substituted value that papers over a missing input and hides the misconfiguration that produced it.
- DotfilesSystems & Tooling
A tracked repository of personal configuration, making a machine setup reproducible.
- Dynamic LinkingSystems & Tooling
Loading a program's libraries at run time from shared files instead of copying them into the executable, which saves space and eases patching at the cost of fragile dependencies.
- Fail FastMethod
Crash at the point of misconfiguration rather than degrading quietly into a wrong state.
- Git WorktreeVersion Control & Delivery
An additional working directory attached to one repository, each on its own branch.
- GitignoreVersion Control & Delivery
The file of patterns telling Git which files to leave untracked, such as build output, dependencies, editor clutter, and local secrets, along with the traps of files that were already tracked and secrets already committed.
- Least PrivilegeSystems & Tooling
Granting only the permissions actually required, so a compromise has a small ceiling.
- PortSystems & Tooling
The numeric endpoint a network service listens on, and a scarce shared resource on a developer machine.
- Secret ManagementSystems & Tooling
Storing, distributing, and rotating credentials without embedding them in code or history.
- ShebangSystems & Tooling
The "#!" line at the top of a script that tells the kernel which interpreter should run it, so a text file can be executed like a compiled program, and the portability traps around it.
- ShellSystems & Tooling
The interactive command interpreter, and a programming language with unusually sharp edges.
- Symbolic LinkSystems & Tooling
A file that points at another path, resolved transparently by most operations.
- Terminal MultiplexerSystems & Tooling
A program that runs many terminal sessions inside one window, splits it into panes, and keeps the sessions alive on a server after the connection drops, so long jobs and remote work survive disconnection.
- Terminal User InterfaceGraphics & Rendering
An interface rendered as text in a terminal, and the design conventions that make command-line tools humane.
- Test IsolationTesting & Verification
The property that each test passes or fails on its own, regardless of which other tests run, in what order, or in parallel.
- Time ZoneSystems & Tooling
Civil time is a political layer over solar time, and its rules change often enough to be data.
- XDG Base Directory SpecificationSystems & Tooling
A convention placing configuration, data, cache, and state in defined directories rather than the home directory.