# -*- mode: sh; -*- # vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=sh: # # ~/.profile # Source by login shells, or by Xsession(5) through `~/.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 # Miniconda/Anaconda if [ -d "${HOME}/miniconda3/bin" ]; then _CONDA_DIR="${HOME}/miniconda3" elif [ -d "${HOME}/anaconda3/bin" ]; then _CONDA_DIR="${HOME}/anaconda3" fi if [ -n "${_CONDA_DIR}" ]; then _path_prepend "${_CONDA_DIR}/bin" . "${_CONDA_DIR}/etc/profile.d/conda.sh" unset _CONDA_DIR fi # Locally installed programs (e.g., Python) if [ -d "${HOME}/.local/bin" ]; then _path_prepend "${HOME}/.local/bin" fi _path_prepend "${HOME}/bin" _path_append "/usr/local/sbin" _path_append "/usr/sbin" _path_append "/sbin" ## 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 ## Password store export PASSWORD_STORE_ENABLE_EXTENSIONS=true export PASSWORD_STORE_GENERATED_LENGTH=16 export EDITOR="vim" export VISUAL="${EDITOR}" export PAGER="less" export LESS="--ignore-case --raw-control-chars" # Set flag to avoid being sourced again _PROFILE_SOURCED=yes # EOF