LICM study materials
LICM study resources

LICM key terms

LICM · Get comfortable with the vocabulary.

GPL (GNU General Public License)

A software license that guarantees users the freedom to run, study, modify, and redistribute a program, provided derivative works are released under the same terms. It is the most common license for Linux kernel and many community projects.

Related: Copyleft, Open Source Initiative, Upstream
Copyleft

A licensing principle that uses copyright law to require that modified or extended versions of a work keep the same freedoms. Unlike permissive licenses, it restricts relicensing under more closed terms.

Related: GPL (GNU General Public License), Open Source Initiative
Open Source Initiative (OSI)

A non-profit organization that maintains the Open Source Definition and approves licenses that meet it. Its approval mark helps candidates and companies judge whether a license grants genuine software freedoms.

Related: GPL (GNU General Public License), Copyleft
Upstream

The original project and maintainers from which a distribution or fork takes its code. Contributing upstream means sending patches to that origin rather than only to a local package or vendor copy.

Related: Fork, Patch, Maintainer
Fork

A copy of a project's source code that is developed independently from the original. Forks may later be merged back or may diverge permanently, and they keep their own maintainers and release cycle.

Related: Upstream, Maintainer
Maintainer

A person or small group responsible for reviewing contributions, deciding project direction, and releasing versions of a piece of software. Maintainers are usually volunteers or employees sponsored to work on the project.

Related: Upstream, Patch
Patch

A textual diff describing changes to source files, usually submitted for review and applied with tools such as git apply or patch. Patches are the standard unit of contribution in many open source projects.

Related: Upstream, Maintainer
Distribution (distro)

A complete operating system built from the Linux kernel plus libraries, package management, installer, and curated software. Examples include Debian, Fedora, and Ubuntu, each with its own release and support policy.

Related: Package Manager, Repository
Package Manager

A tool that installs, upgrades, and removes software packages while resolving dependencies. Examples are apt on Debian-based systems and dnf on Fedora-based systems; it tracks installed files and versions.

Related: Repository, Distribution (distro), Dependency
Repository

A curated collection of software packages plus metadata that a package manager reads to find, verify, and download software. Repositories may be local, on the internet, or on removable media.

Related: Package Manager, Dependency
Dependency

Another package or library that a program requires in order to run or build correctly. Package managers resolve dependencies automatically so users do not have to install each required component by hand.

Related: Package Manager, Repository
Filesystem Hierarchy Standard (FHS)

A convention describing where files should live on a Linux system, such as /etc for configuration, /var for variable data, and /usr for user programs. Distributions follow it so software behaves predictably.

Related: Mount Point, Absolute Path
Absolute path

A path that starts at the root directory with a leading slash, such as /etc/hosts, and therefore names the same file regardless of the current working directory. Relative paths are interpreted from the current directory instead.

Related: Relative path, Filesystem Hierarchy Standard (FHS)
Relative path

A path interpreted from the current working directory rather than from the root, such as docs/readme.txt or ../bin. It is shorter to type but depends on where the shell currently is.

Related: Absolute path, pwd
pwd

A shell command that prints the absolute path of the current working directory. It is often used before relative-path operations to confirm where commands will take effect.

Related: Relative path, Absolute path
Mount point

A directory where a filesystem is attached to the main directory tree, such as /home or /mnt/usb. After mounting, the contents of that filesystem appear under that directory.

Related: Filesystem Hierarchy Standard (FHS), fstab
fstab

The /etc/fstab file lists filesystems and their mount options so they can be mounted automatically at boot. Errors in it can prevent a system from starting normally.

Related: Mount point
Standard input/output (stdin, stdout, stderr)

Three default data streams every process inherits: stdin for input, stdout for normal output, and stderr for error messages. Shell redirection and pipes operate on these streams by number or name.

Related: Redirection, Pipe, Exit status
Redirection

Shell syntax that sends a command's input or output to a file or another stream, using operators such as >, >>, <, and 2>. It changes where data flows without changing the command itself.

Related: Standard input/output (stdin, stdout, stderr), Pipe
Pipe

The | operator that connects the stdout of one command to the stdin of the next, forming a processing chain. Pipes let small single-purpose tools be combined to solve larger tasks.

Related: Standard input/output (stdin, stdout, stderr), grep, Redirection
grep

A command that searches input line by line for text matching a pattern, often a regular expression, and prints matching lines. Options such as -i, -r, and -v adjust case, recursion, and inversion.

Related: Regular expression, Pipe
Regular expression

A pattern language for describing text, using anchors, character classes, quantifiers, and groups. Tools such as grep, sed, and awk use it to match and transform content.

Related: grep, sed
sed

A stream editor that applies scripted text transformations, such as substitution with s/old/new/, to input line by line. It is commonly used in pipelines and shell scripts for automated editing.

Related: Regular expression, awk, Pipe
awk

A text-processing language and command that works on records and fields, making it easy to filter and reformat tabular data. It supports variables, conditions, and arithmetic inside programs.

Related: sed, Pipe
Exit status

A numeric value a process returns to its parent when it finishes; zero conventionally means success and non-zero means failure. Shells expose the last value through $? and use it in conditional logic.

Related: Standard input/output (stdin, stdout, stderr), Shell script
Shell script

A text file of shell commands, usually starting with a shebang line naming the interpreter, made executable to run as a program. Scripts automate repetitive tasks and can accept arguments and use variables.

Related: Exit status, Environment variable
Environment variable

A named value stored in a process's environment and inherited by child processes, such as PATH or HOME. Programs read them to adjust behavior without changing their code.

Related: Shell script, PATH
Kernel

The core program that manages CPU scheduling, memory, devices, and system calls, mediating between hardware and user programs. Linux strictly refers to this component, while a distribution adds everything else.

Related: System call, Distribution (distro), Loadable kernel module
System call

A controlled entry point through which user programs ask the kernel to perform privileged operations such as reading files or creating processes. Libraries usually wrap them in friendlier functions.

Related: Kernel, Process
Process

A running instance of a program with its own memory space, identifiers, and state. The kernel schedules processes and tracks them with a PID, parent PID, and priority.

Related: System call, Signal, PID
PID

The process identifier, a number the kernel assigns to each running process. Tools such as ps and kill use it to inspect or signal a specific process.

Related: Process, Signal
Signal

An asynchronous notification the kernel delivers to a process, such as SIGTERM asking it to terminate or SIGKILL forcing it to stop. Programs may catch some signals and define their own handling.

Related: Process, PID
Loadable kernel module

Code that can be inserted into or removed from a running kernel to add device drivers or features without rebooting. Tools such as lsmod, modprobe, and rmmod manage them.

Related: Kernel
systemd unit

A configuration file describing something systemd manages, such as a service, socket, timer, or mount. Units declare dependencies and are started, stopped, and enabled with systemctl.

Related: journald, Process
journald

The systemd component that collects and stores log messages from the kernel, services, and applications in a structured binary journal. It is queried with journalctl and can forward logs to other systems.

Related: systemd unit
File permission bits

The read, write, and execute settings assigned separately to a file's owner, group, and others. They are shown by ls -l and changed with chmod using symbolic or octal notation.

Related: chmod, umask, SUID bit
chmod

A command that changes a file's permission bits, either symbolically (u+x) or numerically (755). Only the owner or a privileged user may normally change permissions on a file.

Related: File permission bits, umask, SUID bit
umask

A value that masks permission bits when new files and directories are created, subtracting rights from a default. A umask of 022 typically yields 644 for files and 755 for directories.

Related: File permission bits, chmod
SUID bit

A special permission that makes a program run with the file owner's user ID rather than the caller's. It is powerful and risky, so it is limited to carefully written programs such as passwd.

Related: File permission bits, chmod
sudo

A program that lets permitted users run commands as another user, usually root, after authentication. Its rules live in /etc/sudoers, and it is preferred over sharing the root password.

Related: root, File permission bits
root

The superuser account with user ID 0, able to bypass ordinary permission checks and change any part of the system. Routine work should avoid it because mistakes have system-wide effect.

Related: sudo, File permission bits