Shell agnostic shell startup commands.
Find a file
2026-10-27 13:28:54 +00:00
platform update 2026-10-27 13:13:37 +00:00
aliases.sh update 2026-10-27 13:13:37 +00:00
commands.README.md update 2026-10-27 12:49:05 +00:00
commands.sh update 2026-10-27 13:13:37 +00:00
commands.tsv update 2026-10-27 13:13:37 +00:00
hosts.sh update 2026-10-27 13:13:37 +00:00
install.sh update 2026-10-27 12:01:57 +00:00
interactive.sh update 2026-10-27 13:13:37 +00:00
memory.README.md update 2026-10-27 13:28:54 +00:00
memory.tsv update 2026-10-27 13:28:54 +00:00
profile update 2026-10-27 12:01:57 +00:00
README.md update 2026-10-27 13:28:54 +00:00

Shared shell profile

This repository owns the login environment and interactive commands intended to be shared by Bourne-family shells.

"Shared" means shells capable of reading POSIX-style sh, such as sh, Bash, Dash and—with appropriate compatibility—Zsh. It does not mean that the same file can be sourced directly by shells with different languages, such as Fish or Nushell.

Responsibilities

  • Install ~/.profile as a symlink into this repository.
  • Define XDG locations and general editor/browser environment variables.
  • Construct PATH idempotently for language and user-level executable paths.
  • Load environment setup that is portable at login, such as Cargo's env file.
  • Provide common aliases and small interactive functions that are useful across supported Bourne-family shells.
  • Isolate Arch Linux commands from otherwise portable shell configuration.

Boundaries

The profile file must remain quiet, idempotent and safe for a POSIX shell to source during login. It must not print an alias catalogue, configure a prompt, perform interactive terminal operations or start background work.

Interactive shells should source interactive.sh from their own RC file. The login profile deliberately does not source it, because login profiles may also run in non-interactive sessions.

Shell-specific prompt, history, completion and initialization belongs in the corresponding shell repository, currently bash. User services and timers belong in the separate systemd repository.

Files

  • profile: portable login environment and PATH construction.
  • interactive.sh: POSIX loader and manually curated alias reminder.
  • aliases.sh: common POSIX interactive aliases and helper functions.
  • commands.sh: command-catalogue display and validation functions.
  • hosts.sh: SSH destination listing function.
  • platform/arch.sh: Arch Linux applications, GNU options and Pacman/systemd integration, written with POSIX shell syntax.
  • commands.tsv: curated command descriptions and reminder visibility.
  • commands.README.md: format and maintenance instructions for commands.tsv.
  • memory.tsv: selectively curated shell-memory questions and answers.
  • memory.README.md: format, scope and daily-selection behavior for the memory question bank.
  • install.sh: installs the ~/.profile symlink.

Alias portability

The shared interactive files use POSIX shell syntax. Bash-only compatibility aliases—including names that are deliberately being retired—live in the Bash repository's aliases.bash instead.

External commands remain platform-specific by design: aliases for Pacman, systemd, GNU utilities and local applications target this Arch Linux setup. Syntax portability does not imply operating-system portability.

The Arch update function runs the local archnews_wrap Pacman workflow and, after a successful upgrade, requests a non-blocking refresh from the systemd user service package-status-refresh.service.