Watch
1
0
Fork
You've already forked dotfiles
0

Add base configuration

- Follow XDG standard: ~/.config and ~/.local folders
- Set environment variables and define aliases within ~/.config/shell
- Add installation script for easy setup and maintenance
  (i.e., `install-dotfiles` and `update-dotfiles`,
   and a `ensure-locales` helper)
- Add README.md with info on the installation and general notes
This commit is contained in:
Alexander Hess 2026-06-11 18:28:00 +02:00 committed by Alexander Hess
commit e1cefdcd26
Signed by: alexander
GPG key ID: B46EDB4DFC26805D
12 changed files with 424 additions and 0 deletions

11
.config/shell/README.md Normal file
View file

@ -0,0 +1,11 @@
# Shell-related Configurations
This folder contains files that are sourced by `bash` and `zsh`.
They are not executable.
The `#!/bin/sh` line documents the dialect for readers and editors;
it has no effect, since the files are sourced and never run directly.
[`welcome`](./welcome) and [`logout`](./logout)
depend on helper functions defined in [`~/.profile`](../../.profile),
so they cannot work standalone.

10
.config/shell/aliases Normal file
View file

@ -0,0 +1,10 @@
#!/bin/sh
# Aliases used in all kinds of shells
# Manage the bare `git` repository in ~/ holding the dotfiles
alias dotfiles='git --git-dir=$DOTFILES_DIR --work-tree=$HOME'
alias grep='grep --exclude-dir=.git'

38
.config/shell/env Normal file
View file

@ -0,0 +1,38 @@
#!/bin/sh
# Environment variables for all kinds of shells
# Standard XDG base directories
# See: https://wiki.archlinux.org/title/XDG_Base_Directory
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share" # also set in ~/.local/bin/dotfiles-{install,update}
export XDG_STATE_HOME="$HOME/.local/state"
# Make up a XDG directory for binaries (that does not exist in the standard)
export XDG_BIN_HOME="$HOME/.local/bin"
# Convenient names for various places in the system
export DOTFILES_DIR="$XDG_DATA_HOME/dotfiles" # also set in ~/.local/bin/dotfiles-{install,update}
# Generic shell configs
[ -t 0 ] && export GPG_TTY=$(tty)
export PAGER=less
export LESS="--chop-long-lines --ignore-case --LONG-PROMPT --no-init --raw-control-chars --status-column --quit-if-one-screen"
[ -f "$XDG_CONFIG_HOME/shell/locale" ] && . "$XDG_CONFIG_HOME/shell/locale"
# Move common tools' config and cache files into XDG directories
export LESSHISTFILE="$XDG_STATE_HOME/less/history"

24
.config/shell/locale Normal file
View file

@ -0,0 +1,24 @@
#!/bin/sh
# Locale settings for headless machines
# Drop what a client may forward over `ssh`,
# because `AcceptEnv LANG LC_*` may be set in /etc/ssh/sshd_config
unset \
LC_ALL \
LC_ADDRESS \
LC_COLLATE \
LC_CTYPE LC_IDENTIFICATION \
LC_MEASUREMENT \
LC_MESSAGES \
LC_MONETARY \
LC_NAME \
LC_NUMERIC \
LC_PAPER \
LC_TELEPHONE \
LC_TIME
# Set every LC_* category implicitly with the `$LANG` fallback
export LANG=C.UTF-8