Kelly Mears

Symbolic Link

A file that points at another path, resolved transparently by most operations.

Systems & Tooling2 min read224 words12 out · 6 in
also calledSymlink

A symbolic link is a file whose content is a path; opening it transparently opens the target. It differs from a hard link, which is a second directory entry for the same underlying file — a symlink can point at something that does not exist, and can cross filesystems.

Symlinks are the standard mechanism for making one canonical copy of a file appear where a tool insists on finding it, which is what makes a Dotfiles repository practical for tools that ignore configuration-directory conventions.

They break in specific ways worth knowing. A relative symlink resolves against its own directory, so moving the link changes what it points at. A broken link — target moved or deleted — often surfaces as a confusing "file not found" for a file that visibly exists. And tools differ on whether they follow links: some copy the link, some copy the target, some refuse.

Version control treats a symlink as a file containing a path, which means committing one commits the path, not the content. That is usually what you want in a configuration repository and is a trap if the intent was to track the file.

Careless linking of a home directory's important files is a genuinely destructive operation, which is the argument for a script that is reviewable and idempotent rather than a sequence of ad-hoc commands.

See also11

XDG Base Directory Specification

A convention placing configuration, data, cache, and state in defined directories rather than the home directory.

Systems & Tooling11 connections

Idempotence

The property that performing an operation twice has the same effect as performing it once.

Systems & Tooling34 connections

Environment Variable

A named value in a process's environment, inherited by its children — the standard configuration channel.

Systems & Tooling23 connections

Shell

The interactive command interpreter, and a programming language with unusually sharp edges.

Systems & Tooling24 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

Time Zone

Civil time is a political layer over solar time, and its rules change often enough to be data.

Systems & Tooling21 connections

Containerization

Packaging an application with its dependencies into an isolated, reproducible runtime unit.

Systems & Tooling33 connections

Secret Management

Storing, distributing, and rotating credentials without embedding them in code or history.

Systems & Tooling33 connections

Silent Failure

A failure that produces no signal, so the absence of an error reads as success.

Method73 connections

Archive File

Files that bundle many files and their metadata into one, from tape-era tar streams to zip's index at the end, whose design choices still decide what can be listed, extracted, or exploited.

Systems & Tooling6 connections

Time-of-Check to Time-of-Use

A race where a program checks a condition and then acts on it, but the world changes in between, the root of classic file-permission exploits and of double-spending bugs in web applications.

Systems & Tooling12 connections

Linked from6