2015-06-13 07:20:32 +00:00
|
|
|
# If not running interactively, don't do anything
|
|
|
|
[ -z "$PS1" ] && return
|
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
##### VARIABLES #####
|
2015-06-13 07:20:32 +00:00
|
|
|
# don't put duplicate lines in the history. See bash(1) for more options
|
|
|
|
export HISTCONTROL=ignoredups
|
|
|
|
# ... and ignore same sucessive entries.
|
|
|
|
export HISTCONTROL=ignoreboth
|
2016-04-27 16:19:18 +00:00
|
|
|
# size
|
|
|
|
export HISTSIZE=10000
|
|
|
|
export HISTFILESIZE=100000
|
2017-05-01 09:18:25 +00:00
|
|
|
# navigateur prefere
|
|
|
|
export BROWSER=firefox
|
|
|
|
# editeur par defaut
|
|
|
|
export EDITOR=vim
|
|
|
|
export VISUAL=$EDITOR
|
|
|
|
# pager man conserve affichage à l'écran
|
|
|
|
export MANPAGER="less -X"
|
2017-11-14 19:09:35 +00:00
|
|
|
# youtube dl default
|
|
|
|
export YDL_TARGET=$HOME/tmp
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
##### COLORS #####
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
# ls colors
|
|
|
|
export LSCOLORS="ExGxFxdxCxDxDxhbadExEx"
|
|
|
|
# enable color support of ls and also add handy aliases
|
|
|
|
if [ "$TERM" != "dumb" ]; then
|
|
|
|
[ -x /usr/bin/dircolors ] && eval "`dircolors -b`"
|
2015-06-13 07:20:32 +00:00
|
|
|
fi
|
|
|
|
|
2017-05-01 10:51:38 +00:00
|
|
|
RED='\[\033[0;31m\]'
|
|
|
|
REDB='\[\033[1;31m\]'
|
2017-05-01 15:51:55 +00:00
|
|
|
GREEN='\[\033[0;32m\]'
|
|
|
|
GREENB='\[\033[1;32m\]'
|
|
|
|
YELLOW='\[\033[0;33m\]'
|
|
|
|
YELLOWB='\[\033[1;33m\]'
|
2017-05-02 15:50:02 +00:00
|
|
|
BLUE='\[\033[0;34m\]'
|
|
|
|
BLUEB='\[\033[1;34m\]'
|
2017-05-01 15:51:55 +00:00
|
|
|
PURPLE='\[\033[0;35m\]'
|
|
|
|
PURPLEB='\[\033[1;35m\]'
|
|
|
|
CYAN='\[\033[0;36m\]'
|
|
|
|
CYANB='\[\033[1;36m\]'
|
2017-05-01 10:51:38 +00:00
|
|
|
WHITE='\[\033[0;37m\]'
|
|
|
|
WHITEB='\[\033[1;37m\]'
|
|
|
|
RESET='\[\033[0;00m\]'
|
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
##### INCLUDES #####
|
2015-06-13 07:20:32 +00:00
|
|
|
|
|
|
|
# Alias definitions.
|
|
|
|
if [ -f ~/.bash_aliases ]; then
|
|
|
|
. ~/.bash_aliases
|
|
|
|
fi
|
|
|
|
# host specific
|
|
|
|
if [ -f ~/.bash_aliases_$(hostname -s) ]; then
|
|
|
|
. ~/.bash_aliases_$(hostname -s)
|
|
|
|
fi
|
2017-05-01 17:16:37 +00:00
|
|
|
if [ -f ~/.bashrc_$(hostname -s) ]; then
|
|
|
|
. ~/.bashrc_$(hostname -s)
|
|
|
|
fi
|
2015-06-13 07:20:32 +00:00
|
|
|
|
|
|
|
# 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 ]; then
|
|
|
|
. /etc/bash_completion
|
|
|
|
fi
|
2017-05-01 09:18:25 +00:00
|
|
|
# FreeBSD
|
|
|
|
[[ $PS1 && -f /usr/local/share/bash-completion/bash_completion.sh ]] && \
|
|
|
|
source /usr/local/share/bash-completion/bash_completion.sh
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
##### MISC #####
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
# check the window size after each command and, if necessary,
|
|
|
|
# update the values of LINES and COLUMNS.
|
|
|
|
shopt -s checkwinsize
|
2015-06-13 07:20:32 +00:00
|
|
|
# conserve l'historique lorsque l'on utilise plusieurs terminaux
|
|
|
|
shopt -s histappend
|
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
# If this is an xterm set the title to user@host:dir
|
|
|
|
case "$TERM" in
|
|
|
|
xterm*|rxvt*)
|
|
|
|
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
;;
|
|
|
|
esac
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
# Tmux + ssh agent forwarding
|
|
|
|
if [ -S "$SSH_AUTH_SOCK" ] && [ ! -h "$SSH_AUTH_SOCK" ]; then
|
|
|
|
ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
|
|
|
|
fi
|
|
|
|
export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
##### PROMPT #####
|
2017-05-01 11:04:44 +00:00
|
|
|
prompt_status()
|
|
|
|
{
|
2017-05-01 16:48:25 +00:00
|
|
|
# unicode to hex: echo -ne "\u2620" | hexdump -C
|
2017-05-01 15:51:55 +00:00
|
|
|
if [[ "$exitStatus" == "0" ]]
|
2017-05-01 11:04:44 +00:00
|
|
|
then
|
2017-05-01 16:44:17 +00:00
|
|
|
echo -n "${GREENB}\xE2\x9a\x90"
|
2017-05-01 11:04:44 +00:00
|
|
|
else
|
2017-05-01 16:44:17 +00:00
|
|
|
echo -n "${REDB}\xE2\x9a\x91"
|
2017-05-01 11:04:44 +00:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
prompt_root()
|
|
|
|
{
|
|
|
|
if [[ "$(id -u)" == "0" ]]
|
|
|
|
then
|
|
|
|
echo -n "${REDB}#"
|
|
|
|
else
|
|
|
|
echo -n "${WHITEB}$"
|
|
|
|
fi
|
|
|
|
}
|
2017-05-01 11:09:45 +00:00
|
|
|
prompt_remote()
|
|
|
|
{
|
2017-05-01 15:51:55 +00:00
|
|
|
if [[ -n "$SSH_CLIENT" ]]
|
2017-05-01 11:09:45 +00:00
|
|
|
then
|
2017-05-01 15:51:55 +00:00
|
|
|
echo -n "${RED}"
|
2017-05-01 11:09:45 +00:00
|
|
|
else
|
2017-05-01 15:51:55 +00:00
|
|
|
echo -n "${GREEN}"
|
2017-05-01 11:09:45 +00:00
|
|
|
fi
|
|
|
|
}
|
2017-05-01 15:51:55 +00:00
|
|
|
__ps1pre()
|
|
|
|
{
|
|
|
|
export exitStatus=$?
|
2017-05-01 16:44:17 +00:00
|
|
|
echo -en "${YELLOWB}(${WHITE}\u${YELLOWB}@$(prompt_remote)\h${YELLOWB}) ${BLUEB}\w${RESET}"
|
2017-05-01 15:51:55 +00:00
|
|
|
}
|
|
|
|
__ps1post()
|
|
|
|
{
|
2017-05-01 16:44:17 +00:00
|
|
|
echo -en "\n$(prompt_status) $(prompt_root)${RESET} "
|
2017-05-01 15:51:55 +00:00
|
|
|
}
|
2017-05-01 10:51:38 +00:00
|
|
|
__ps1()
|
|
|
|
{
|
2017-05-01 15:51:55 +00:00
|
|
|
exitStatus=$?
|
|
|
|
PS1="$(__ps1pre)$(__ps1post)"
|
|
|
|
}
|
|
|
|
__ps1_git()
|
|
|
|
{
|
|
|
|
exitStatus=$?
|
|
|
|
__git_ps1 "$(__ps1pre)" "$(__ps1post)"
|
2017-05-01 10:51:38 +00:00
|
|
|
}
|
2017-05-01 15:51:55 +00:00
|
|
|
PROMPT_COMMAND='__ps1'
|
2015-06-13 07:20:32 +00:00
|
|
|
|
2017-05-01 09:18:25 +00:00
|
|
|
##### GIT #####
|
2016-03-08 18:41:15 +00:00
|
|
|
|
|
|
|
if [ -e /usr/local/share/git-core/contrib/completion/git-completion.bash ]; then
|
|
|
|
. /usr/local/share/git-core/contrib/completion/git-completion.bash
|
|
|
|
fi
|
2017-09-10 09:24:47 +00:00
|
|
|
if [ -e $HOME/.git-completion.bash ]; then
|
|
|
|
. $HOME/.git-completion.bash
|
|
|
|
fi
|
|
|
|
if [ -e $HOME/bin/git-prompt.sh ] || [ -e /usr/local/share/git-core/contrib/completion/git-prompt.sh ] || [ -e /usr/lib/git-core/git-sh-prompt ]; then
|
|
|
|
if [ -e $HOME/bin/git-prompt.sh ]; then
|
|
|
|
. $HOME/bin/git-prompt.sh
|
|
|
|
fi
|
2016-05-20 17:43:25 +00:00
|
|
|
if [ -e /usr/lib/git-core/git-sh-prompt ]; then
|
|
|
|
. /usr/lib/git-core/git-sh-prompt
|
|
|
|
fi
|
|
|
|
if [ -e /usr/local/share/git-core/contrib/completion/git-prompt.sh ]; then
|
|
|
|
. /usr/local/share/git-core/contrib/completion/git-prompt.sh
|
|
|
|
fi
|
2016-03-08 18:41:15 +00:00
|
|
|
export GIT_PS1_SHOWDIRTYSTATE=1
|
|
|
|
export GIT_PS1_SHOWSTASHSTATE=1
|
|
|
|
export GIT_PS1_SHOWUNTRACKEDFILES=1
|
|
|
|
export GIT_PS1_SHOWUPSTREAM="auto"
|
|
|
|
export GIT_PS1_SHOWCOLORHINTS=1
|
2017-05-01 15:51:55 +00:00
|
|
|
PROMPT_COMMAND='__ps1_git'
|
2016-03-08 18:41:15 +00:00
|
|
|
fi
|
2016-07-27 07:36:19 +00:00
|
|
|
|