dotfiles/.profile
Alexander Hess 1f3fe88216
Add configuration for bash
- Add ~/.bashrc
  + Configure on how the `history` works
  + Enable nicer `cd` and globbing behavior
  + Enable tab completion, even for aliases
  + Add some more stuff from Debian's ~/.bashrc
- Add ~/.bash_logout clearing the screen
- Adapt the installation script to remove
  possibly conflicting files
- Ensure ~/.local/state/bash/ exists
2025-08-30 11:19:24 +02:00

59 lines
1.2 KiB
Bash

#!/bin/sh
# Main setup file executed for all kinds of shells
#
# For `bash`, the following two files must not exist:
# - ~/.bash_login
# - ~/.bash_profile
# If they do, this file may not be executed!
# Prevent loading ~/.profile twice in `bash`
export PROFILE_LOADED=1
# Basic utilities
_command_exists() {
command -v "$1" 1>/dev/null 2>&1
}
_in_bash() {
[ -n "$BASH_VERSION" ]
}
_in_zsh() {
[ -n "$ZSH_VERSION" ]
}
_prepend_to_path () {
if [ -d "$1" ] ; then
case :$PATH: in
*:$1:*) ;;
*) PATH=$1:$PATH ;;
esac
fi
}
# Load configuration files common to all kinds of shells
[ -f "$HOME/.config/shell/env" ] && . "$HOME/.config/shell/env"
[ -f "$HOME/.config/shell/aliases" ] && . "$HOME/.config/shell/aliases"
# Source ~/.profile_local, which holds machine-specific ENV variables
[ -f "$HOME/.profile_local" ] && . "$HOME/.profile_local"
# Load `bash`-specific configurations for non-login `bash` shells
if [ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
# Put local executables on the `$PATH`
_prepend_to_path "$HOME/.local/bin"
# Ensure ~/.profile is loaded each time `bash` starts
unset PROFILE_LOADED