====== profile and profile.d ====== **Files:** ''~/.profile'', ''~/.profile.d/00-env.sh'', ''~/.profile.d/10-aliases.sh'', ''~/.profile.d/20-functions.sh'', ''~/.profile.d/30-tools.sh'' ===== ~/.profile ===== Executed for login shells. Three jobs: - Sources ''~/.bashrc'' if bash is running - Adds ''~/bin'' and ''~/.local/bin'' to PATH - Runs the tilde.town welcome on new user first login (''~/.newuser'' check) ===== ~/.profile.d/00-env.sh — Environment Variables ===== export EDITOR=micro export VISUAL=micro export PAGER=less export LESS="-R" # pass ANSI colours through less export PATH="$HOME/bin:$HOME/.local/bin:$PATH" export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export TZ=America/Calgary export TERM=xterm-256color export COLORTERM=truecolor export HISTSIZE=10000 export HISTFILESIZE=20000 export HISTCONTROL=ignoreboth:erasedups export GPG_TTY=$(tty) ===== ~/.profile.d/10-aliases.sh — Modern Tool Aliases ===== Aliases with availability checks — gracefully falls back to standard tools: # eza replaces ls (if available) if command -v eza &> /dev/null; then alias ls='eza --icons --git' alias ll='eza -l --icons --git' alias la='eza -la --icons --git' alias lt='eza --tree --level=2 --icons --git' fi # ripgrep replaces grep (if available) if command -v rg &> /dev/null; then alias grep='rg' fi # bat replaces cat/less (if available) if command -v bat &> /dev/null; then alias cat='bat' alias less='bat' fi # fastfetch replaces neofetch (if available) if command -v fastfetch &> /dev/null; then alias neofetch='fastfetch' fi alias ttbp='~/.ttbp/bin/ttbp' alias town='town' ===== ~/.profile.d/20-functions.sh — Shell Functions ===== ^ Function ^ Usage ^ Description ^ | ''mkcd'' | ''mkcd dirname'' | mkdir + cd in one step | | ''extract'' | ''extract file.tar.gz'' | Universal archive extractor (tar, zip, bz2, rar, 7z…) | | ''replace'' | ''replace old new file'' | sed in-place find/replace | | ''ff'' | ''ff pattern'' | Find files by name pattern | | ''fd'' | ''fd pattern'' | Find directories by name pattern | | ''myip'' | ''myip'' | Get current public IP (via ifconfig.me) | | ''backup'' | ''backup file'' | Copy file with datestamped suffix | | ''gitinit'' | ''gitinit'' | ''git init'' + initial commit | | ''path'' | ''path'' | Print PATH one entry per line | ===== ~/.profile.d/30-tools.sh — Tool Initializations ===== All wrapped in availability checks: ^ Tool ^ Init method ^ | fzf | Sources ''~/.config/fzf/fzf.bash'' | | starship | ''eval "$(starship init bash)"'' | | nvm | Sources ''$NVM_DIR/nvm.sh'' | | pyenv | ''eval "$(pyenv init -)"'' | | rbenv | ''eval "$(rbenv init -)"'' | | direnv | ''eval "$(direnv hook bash)"'' | | asdf | Sources ''~/.asdf/asdf.sh'' | ===== See Also ===== * [[terminal:shell:start|Terminal Shell Index]] * [[terminal:shell:bashrc|bashrc and bash_aliases]] * [[terminal:tools:modern_cli_tools|Modern CLI Tools]] * [[terminal:shell:dotfiles|Dotfiles index]] * [[terminal:start|Return to terminal]]