-
Notifications
You must be signed in to change notification settings - Fork 0
/
dot_bashrc
135 lines (106 loc) · 3.67 KB
/
dot_bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# -*-mode:bash-*- vim:ft=bash
# shellcheck shell=bash disable=SC1091
# ~/.bashrc
# =============================================================================
# Executed by bash for non-login shells.
#
# This file is a shell script that Bash runs whenever it is started
# interactively.
#
# For non-login interactive shells (subject to the -norc and -rcfile options):
# On starting up:
# If `~/.bashrc' exists, then source it.
#
# See https://www.gnu.org/software/bash/manual/html_node/index.html
# Load configurations common across shell environments.
for file in "${HOME}/.profile" "${HOME}/.aliases" "${HOME}/.bash_completion" "${HOME}/.functions"; do
if [[ -f "${file}" ]]; then
# shellcheck source=/dev/null
source "${file}"
fi
done
# ========================
# === Google Cloud SDK ===
# ========================
if [[ -f "$HOME/.local/share/google-cloud-sdk/path.bash.inc" ]]; then
source "$HOME/.local/share/google-cloud-sdk/path.bash.inc"
source "$HOME/.local/share/google-cloud-sdk/completion.bash.inc"
fi
# ===============
# === History ===
# ===============
# Stop bash from caching duplicate lines or lines starting with space
# HISTCONTROL=ignoredups:ignorespace
export HISTCONTROL=ignoreboth
# Extend the maximum number of commands to remember on the history list to 1000
export HISTSIZE=1000
# ==============
# === zoxide ===
# ==============
if [[ -n "$(command -v zoxide)" ]]; then
eval "$(zoxide init bash)"
fi
# =============
# === mcfly ===
# =============
if [[ -n "$(command -v mcfly)" ]]; then
eval "$(mcfly init bash)"
fi
# =====================
# === Output Stream ===
# =====================
# Prevent CTRL-S from suspending the output stream
stty stop '' -ixoff
# Prevent CTRL-Q from waking up the output stream
stty start '' -ixon
# ==============
# === Prompt ===
# ==============
# http://stackoverflow.com/a/5947802
# Black 0;30 Dark Gray 1;30
# Red 0;31 Light Red 1;31
# Green 0;32 Light Green 1;32
# Brown/Orange 0;33 Yellow 1;33
# Blue 0;34 Light Blue 1;34
# Purple 0;35 Light Purple 1;35
# Cyan 0;36 Light Cyan 1;36
# Light Gray 0;37 White 1;37
# Set the PS1 prompt (with colours)
# shellcheck disable=SC2154
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)")\$ '
parse_git_branch() {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
parse_git_tracking() {
echo ""
}
# =====================
# === Shell Options ===
# =====================
shopt -s histappend # Append commands to the bash command history file (~./bash_history) instead of overriding it
shopt -s cdspell # Autocorrect typos in path names when using `cd`
shopt -s checkwinsize # Check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
shopt -s extglob # Enable detection of inverse, like !(b*)
# If set, the pattern "**" used in a pathname expansion context will match all
# files and zero or more directories and subdirectories.
if [[ ! "${OSTYPE}" =~ "darwin" ]]; then
shopt -s globstar
fi
# Only complete directories for 'cd`, http://unix.stackexchange.com/a/186425
complete -d cd
# ===========
# === SSH ===
# ===========
update_auth_sock
# ==============
# === direnv ===
# ==============
# For the environment to be configured correctly direnv must be placed last in
# this file so not to conflict with other environemnt variables.
if [[ -n "$(command -v direnv)" ]]; then
eval "$(direnv hook bash)"
fi
# Load additional configurations.
if [ -f "${HOME}/.bashrc.after" ]; then
source "${HOME}/.bashrc.after"
fi