# -*- mode: sh; -*- # vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=sh: # # ~/.profile # Source by the login shell, or source by the Xsession(5) through the # `~/.xsessionrc`. # # Aaron LI # # Avoid this file being sourced again [ -n "${PROFILE_SOURCED}" ] && return # Set file creation mask: be more private! umask 027 ### Functions ---------------------------------------------------------- ## PATH manipulations ## Credit: http://unix.stackexchange.com/a/178822 # Remove the specified part from PATH _path_remove() { PATH=$(echo ":${PATH}:" | sed -e "s|:$1:|:|g" -e "s|^:\(.*\):$|\1|") } # Prepend the supplied part to PATH _path_prepend() { _path_remove "$1" PATH="$1:${PATH}" } # Append the supplied part to PATH _path_append() { _path_remove "$1" PATH="${PATH}:$1" } ## Check the existence/accessibility of a command # Credit: https://stackoverflow.com/a/677212/4856091 _exists() { command -v "$1" >/dev/null 2>&1 } ## Check whether the program is running _running() { pgrep -x -u "${USER}" "$1" >/dev/null 2>&1 } ### Environment Settings ----------------------------------------------- ## PATH # Locally installed NPM packages (see also `~/.npmrc`) if [ -d "${HOME}/.npm-packages/bin" ]; then _path_prepend "${HOME}/.npm-packages/bin" fi # Locally installed programs (e.g., Python) if [ -d "${HOME}/.local/bin" ]; then _path_prepend "${HOME}/.local/bin" fi # ~/bin if [ -d "${HOME}/bin" ]; then _path_prepend "${HOME}/bin" fi # System administration programs if groups | grep -qE '\b(wheel|adm|sudo)\b'; then _path_append "/usr/local/sbin" _path_append "/usr/sbin" _path_append "/sbin" fi ## Language and locale export LANG="en_US.UTF-8" export LC_COLLATE="C" ## Chinese input method export INPUT_METHOD="fcitx" export XMODIFIERS="@im=${INPUT_METHOD}" export GTK_IM_MODULE="${INPUT_METHOD}" export QT_IM_MODULE="${INPUT_METHOD}" ## Xapian # Enable the CJK N-gram tokenization algorithm for CJK indexing and search export XAPIAN_CJK_NGRAM=1 export EDITOR="vim" export VISUAL="${EDITOR}" export PAGER="less" export LESS="--ignore-case --raw-control-chars" ## Start `gpg-agent` if not running if ! _running gpg-agent; then gpgconf --launch gpg-agent fi ## Set SSH to use `gpg-agent` as the SSH agent is enabled unset SSH_AGENT_PID if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then export SSH_AUTH_SOCK="/run/user/${UID}/gnupg/S.gpg-agent.ssh" fi PROFILE_SOURCED=yes