# Configuration file for environment related options for all shells. # Use UTF-8 encoding in the terminal. LC_ALL=en_US.UTF-8 export LC_ALL # Use Vim as editor. EDITOR=vim export EDITOR # Set less as pager, its configuration is done through the .less file. PAGER=less export PAGER # Set colors for ls (and zsh completions). This colors files normal (fi), # directories blue bold (di), symbolic links cyan (ln), named pipes normal # (pi), sockets normal (so), block devices normal (bd), character devices # normal (cd) and executables bold red (ex). # See `dircolors --print-database` for possible colors. LS_COLORS='no=00:fi=00:di=34;01:ln=36:pi=00:so=00:bd=00:cd=00:ex=31;01' export LS_COLORS # Sources a configuration file if it exists; loads a fallback .local file if # it doesn't. If the .local files doesn't exist nothing is sourced. # # $1: Path to directory where configuration files are located. # $2: Directory name in $1 where the non .local files are stored, can be # empty. If empty both configuration files (normal and .local) are stored # in $1. # $3: Base name of file in $2, for example "rc" or "env". # $4: Extension for $3, if this file doesn't exist "$1/$3.local" is sourced. # $5: Additional options, set to nolocal to prevent loading of "$1/$3.local" # if "$1/$2/$3.$4" doesn't exist. # # Example with the following directory/file structure, $os is Darwin and # $hostname is marvin. # # ~/.zsh # ~/.zsh/env # ~/.zsh/env.local # ~/.zsh/rc # ~/.zsh/rc.local # ~/.zsh/host/rc.marvin # ~/.zsh/os/rc.Darwin # # To load additional rc files from within ~/.zsh/rc use the following: # # source_config ~/.zsh os rc $os # loads os/rc.Darwin # source_config ~/.zsh host rc $hostname # loads host/rc.marvin # # To load additional env files from within ~/.zsh/env use the following (note # nolocal to prevent loading env.local two times if os and host files don't # exist): # # source_config zsh os env $os nolocal # loads os/rc.Darwin # source_config zsh host env $hostname # loads env.local # # Doesn't fit perfectly in this file, but this is the best place to make it # available everywhere. function source_config() { # Path to the file to source and its local counterpart. local source_file=$1/$2/$3.$4 local source_file_local=$1/$3.local # Additional debug output. if [ x$DEBUG != x ]; then echo "source_config(): checking if $source_file exists" echo "source_config(): checking if $source_file_local exists" fi # If the file does exist then source it. if [ -f $source_file ]; then if [ x$DEBUG != x ]; then echo "source_config(): sourcing $source_file" fi source $source_file # Otherwise load the .local file if it exists and .local files are # allowed. elif [ -f $source_file_local -a x$5 != xnolocal ]; then if [ x$DEBUG != x ]; then echo "source_config(): sourcing $source_file_local" fi source $source_file_local fi }