# # .kshrc - ksh - Korn shell startup file # # See also ksh(1) # Set vi mode set -o vi # If helpers exist _exists() { type $1 > /dev/null 2>&1 } # Don't let \^{}d logout set -o ignoreeof # Export all set -o allexport # Setup history HISTFILE=$HOME/.ksh_history HISTSIZE=10000 HISTCONTROL=ignoredups:ignorespace:erasedups # Some useful aliases # If btop is installed then alias top to btop _exists btop && alias top='/usr/local/bin/btop' # If bat exists then alias cat to bat _exists bat && alias cat='bat --paging=never' # Use colorls if it's installed, plain old ls otherwise _exists colorls && alias ls='colorls -G' alias config='/usr/local/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' # Simple, lightweight git prompt for oksh: if inside a git repo, adds the # branch name to PS1. __get_current_git_branch_name() { branch_name="$(git rev-parse --abbrev-ref HEAD 2>/dev/null)" && \ [ -n "$branch_name" ] && \ echo -en " $branch_name" } # Set prompt: ``username@hostname directory $ '' PS1="\[\e[1;32m\]\u@\h \[\e[1;34m\]\w\[\e[0m\] \[\e[1;31m\]\$(__get_current_git_branch_name)\[\e[0m\] $ " export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" # Pager if _exists less; then PAGER=less LESSHISTFILE=- # -I ignore case # -R colored output # -X don't clear on exit # -Ps string prompt # LESS='-IRXPs %lt-%lb (%Pt-%Pb \%) ░ %bt-%bbb ░ %f ░▒▓' LESS='-IRX' export PAGER LESSHISTFILE LESS fi #coloured man pages man() { sh -c "man '$@' | col -bx | bat -l man" } # Completions # Display possible interfaces on this machine for ifconfig set -A complete_ifconfig_1 -- $(ifconfig | grep ^[a-z] | cut -d: -f1) # Remote access _SSH_HOSTS=$(awk '/^host/{ print $2 }' ~/.ssh/config) set -A complete_ssh -- $_SSH_HOSTS # Git completion set -A complete_git -- \ $(git --list-cmds=main) \ $(git config --get-regexp ^alias\. | awk -F '[\. ]' '{ print $2 }') # OpenBSD rc scripts and rc commands set -A complete_rcctl_1 -- disable enable get ls order set restart start stop set -A complete_rcctl_2 -- $(rcctl ls all)