X-Git-Url: https://code.kerkeslager.com/?p=dotfiles;a=blobdiff_plain;f=.bashrc;h=f7bcae44ef0343583abde11e143aa7877de01f1c;hp=649885ffd6f1ae25e9a2b90cf262f0c8384f92f5;hb=f8e297f33588e48ff2e58de9ddaa6299616405df;hpb=9ed41628b25e03e6c9b24cd58d5571ab1b7a4e90 diff --git a/.bashrc b/.bashrc index 649885f..f7bcae4 100644 --- a/.bashrc +++ b/.bashrc @@ -1,7 +1,11 @@ # ~/.bashrc: executed by bash(1) for non-login shells. +cat /dev/null > ~/.bash_history # If not running interactively, don't do anything -[ -z "$PS1" ] && return +case $- in + *i*) ;; + *) return;; +esac # don't put duplicate lines in the history. See bash(1) for more options # don't overwrite GNU Midnight Commander's setting of `ignorespace'. @@ -24,6 +28,11 @@ shopt -s checkwinsize # set the prompt PS1='\w\$ ' +# 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 + # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then eval "`dircolors -b`" @@ -38,6 +47,8 @@ fi alias emacs='emacs -nw' alias serve='python -m SimpleHTTPServer 8080' +alias gpg='gpg2' +alias gnupg='gnupg2' export SVN_EDITOR=vim @@ -55,6 +66,19 @@ if [ -d $HOME/bin ]; then export PATH fi +# Put $HOME/.cabal/bin on the path. Installing cabal doesn't +# automatically put installed packages on the path. +if [ -d $HOME/.cabal/bin ]; then + PATH="$HOME/.cabal/bin:$PATH" + export PATH +fi + +# Put /usr/local/bin (where homebrew installs stuff) before /usr/bin on the +# path. This means that if a program exists at both locations, calls to that +# program will use the homebrew version rather than the system version. +PATH="/usr/local/bin:$PATH" +export PATH + # Run a machine-specific bashrc (if it exists). if [ -f $HOME/.bashrc_local ]; then source $HOME/.bashrc_local @@ -62,6 +86,54 @@ fi # Automatically open screen. # The if statement prevents it from recursing (since screen opens bash). -if [ $TERM != screen ]; then +if [ $TERM != screen ] && [ $TERM != screen.xterm-256color ] ; then screen fi + +# Gets a directory named .env or .venv if it exists in the currend directory or any of its parents +get_env() { + if [ -d "$1/.env" ] ; then + echo "$1/.env" + else + if [ -d "$1/.venv" ] ; then + echo "$1/.venv" + else + if [ -d "$1/.." ] ; then + get_env "$1/.." + fi + fi + fi +} + +get_absolute_path() { + python3 -c "import os; print(os.path.realpath('$1'))" +} + +on_prompt() { + # Load a virtualenv environment if it exists in a file named .env + env_folder=$(get_env $(pwd)) + + if [ -d "$env_folder" ] ; then + if [[ $VIRTUAL_ENV != $(get_absolute_path $env_folder) ]] ; then + echo "Activating env '$env_folder'" + source "$env_folder/bin/activate" + fi + else + if [ -d "$VIRTUAL_ENV" ] ; then + deactivate + fi + fi +} + +# Call on_prompt() every time the command prompt executes +PROMPT_COMMAND=on_prompt + +# Set vi keybindings +set -o vi + +# pip should only run if there is a virtualenv currently activated +export PIP_REQUIRE_VIRTUALENV=true + +export NVM_DIR="$HOME/.nvm" +[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm +[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion