diff options
Diffstat (limited to 'Common/bashrc.m4')
-rw-r--r-- | Common/bashrc.m4 | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/Common/bashrc.m4 b/Common/bashrc.m4 new file mode 100644 index 0000000..c1078f2 --- /dev/null +++ b/Common/bashrc.m4 @@ -0,0 +1,153 @@ +m4_include(`system.m4')m4_dnl +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# Check if env setup file exists +if [ ! -f ~/.dotfiles_env ]; then + echo "export ZSH=$HOME/.oh-my-zsh" > ~/.dotfiles_env + echo "DEFAULT_USER=$USER" >> ~/.zsh_env_setup + echo "export GIT_EDITOR=\"DEFAULT_EDITOR\"" >> ~/.dotfiles_env + echo "export GIT_AUTHOR_NAME=\"GIT_USER\"" >> ~/.dotfiles_env + echo "export GIT_AUTHOR_EMAIL=\"GIT_EMAIL\"" >> ~/.dotfiles_env +fi + +# Add some commons to PATH +export PATH=$HOME/bin:/usr/local/bin:$HOME/.local/bin:$PATH:$HOME/go/bin + +# Modify locale and path +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 + +# Set editor +export EDITOR="DEFAULT_EDITOR" + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# 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 + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +if [ "$color_prompt" = yes ]; then + PS1='\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='\w\$ ' +fi +unset color_prompt + +# 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' + alias ll='ls -l --color=auto' + alias la='ls -A --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# man pages in colors +man() { + LESS_TERMCAP_md=$'\e[01;31m' \ + LESS_TERMCAP_me=$'\e[0m' \ + LESS_TERMCAP_se=$'\e[0m' \ + LESS_TERMCAP_so=$'\e[01;44;33m' \ + LESS_TERMCAP_ue=$'\e[0m' \ + LESS_TERMCAP_us=$'\e[01;32m' \ + command man "$@" +} + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# 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 ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# Make tmux window title show the ssh hostname +# Make short hostname only if its not an IP address +__tm_get_hostname(){ + local HOST="$(echo $* | rev | cut -d ' ' -f 1 | rev)" + if echo $HOST | grep -P "^([0-9]+\.){3}[0-9]+" -q; then + echo $HOST + else + echo $HOST| cut -d . -f 1 + fi +} + +__tm_get_current_window(){ + tmux list-windows| awk -F : '/\(active\)$/{print $1}' +} + +# Rename window according to __tm_get_hostname and then restore it after the command +__tm_command() { + if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=| cut -d : -f 1)" = "tmux" ]; then + __tm_window=$(__tm_get_current_window) + # Use current window to change back the setting. If not it will be applied to the active window + trap "tmux set-window-option -t $__tm_window automatic-rename on 1>/dev/null" EXIT HUP INT QUIT PIPE TERM + tmux rename-window "$(__tm_get_hostname $*)" + command "$@" + tmux set-window-option -t $__tm_window automatic-rename on 1>/dev/null + else + command "$@" + fi +} + +ssh() { + __tm_command ssh "$@" +} + +# start only one ssh-agent and reuse the created one +# this is used for sway, although keys added do not persist on reboot +SSH_DIR="$HOME" +if ! pgrep -u "$USER" ssh-agent > /dev/null; then + ssh-agent > "$SSH_DIR/ssh-agent.env" +fi +source "$SSH_DIR/ssh-agent.env" > /dev/null + +# enable cargo things +. "$HOME/.cargo/env" + +# Enable FZF history +[ -f ~/.fzf.bash ] && source ~/.fzf.bash |