# If not running interactively, don't do anything [ -z "$PS1" ] && return # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize export PATH="$HOME/bin:/usr/local/bin:$PATH" export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export EDITOR=nvim # Prevent file overwrite on stdout redirection # Use `>|` to force redirection to an existing file set -o noclobber # Automatically trim long paths in the prompt (requires Bash 4.x) PROMPT_DIRTRIM=2 # Enable history expansion with space # E.g. typing !! will replace the !! with your last command bind Space:magic-space # Turn on recursive globbing (enables ** to recurse all directories) shopt -s globstar 2> /dev/null ## SMARTER TAB-COMPLETION (Readline bindings) ## # Perform file completion in a case insensitive fashion bind "set completion-ignore-case on" # Treat hyphens and underscores as equivalent bind "set completion-map-case on" # Display matches for ambiguous patterns at first tab press bind "set show-all-if-ambiguous on" ## SANE HISTORY DEFAULTS ## # Append to the history file, don't overwrite it shopt -s histappend # Save multi-line commands as one command shopt -s cmdhist # Record each line as it gets issued PROMPT_COMMAND='history -a' # Huge history. Doesn't appear to slow things down, so why not? HISTSIZE=500000 HISTFILESIZE=100000 # Avoid duplicate entries HISTCONTROL="erasedups:ignoreboth" # Don't record some commands export HISTIGNORE="&:[ ]*:exit:ls:bg:fg:history:clear" # Useful timestamp format HISTTIMEFORMAT='%F %T ' # Enable incremental history search with up/down arrows (also Readline goodness) # Learn more about this here: http://codeinthehole.com/writing/the-most-important-command-line-tip-incremental-history-searching-with-inputrc/ bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' bind '"\e[C": forward-char' bind '"\e[D": backward-char' ## BETTER DIRECTORY NAVIGATION ## # Prepend cd to directory names automatically shopt -s autocd 2> /dev/null # Correct spelling errors during tab-completion shopt -s dirspell 2> /dev/null # Correct spelling errors in arguments supplied to cd shopt -s cdspell 2> /dev/null # This defines where cd looks for targets # Add the directories you want to have fast access to, separated by colon # Ex: CDPATH=".:~:~/projects" will look for targets in the current working directory, in home and in the ~/projects folder CDPATH="." # This allows you to bookmark your favorite places across the file system # Define a variable containing a path and you will be able to cd into it regardless of the directory you're in shopt -s cdable_vars platform=$(uname) if [[ $platform == "Linux" ]]; then TERM=xterm-256color # make less more friendly for non-text input files, see lesspipe(1) [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # set variable identifying the chroot you work in (used in the prompt below) if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) color_prompt=yes;; esac # uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [[ "$color_prompt" == yes ]]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto -GFh' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi # xcape #~/git/xcape/xcape -e 'Control_L=Escape' # add Matlab path # export PATH=$PATH:/usr/local/MATLAB/R2015b/bin export PATH=/usr/local/MATLAB/R2015b/bin:/usr/local/MATLAB/R2015b/toolbox/local:$PATH elif [[ $platform == "Darwin" ]]; then PS1="\u@\h:\[\033[0;34m\]\w\[\033[0m\]$ " if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi alias ls="ls -CGFh" fi LESS="-im" export LESS alias la="ls -A" alias ll="ls -lha" alias vim="nvim" alias isas="ssh pander@i81server.ira.uka.de" source ~/bin/autocomplete.sh # alias vims="vim -c \"call feedkeys(':source ~/.vim/obsessions/')\"" [ -f ~/.fzf.bash ] && source ~/.fzf.bash