Christopher James Hayward
4 years ago
6 changed files with 475 additions and 0 deletions
-
78README.org
-
233config/shell/README.org
-
81config/shell/bashrc
-
22config/shell/profile
-
1config/x11/xinitrc
-
60init.el
@ -0,0 +1,233 @@ |
|||||
|
#+TITLE: Shell |
||||
|
#+AUTHOR: Christopher James Hayward |
||||
|
#+EMAIL: chris@chrishayward.xyz |
||||
|
|
||||
|
#+begin_src shell |
||||
|
ln -s ~/.local/source/dotfiles/config/shell/bashrc ~/.bashrc |
||||
|
ln -s ~/.local/source/dotfiles/config/shell/profile ~/.profile |
||||
|
#+end_src |
||||
|
|
||||
|
* Bash |
||||
|
:PROPERTIES: |
||||
|
:header-args: :tangle ~/.local/source/dotfiles/config/shell/bashrc :results silent |
||||
|
:END: |
||||
|
|
||||
|
Executed by bash 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. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
case $- in |
||||
|
*i*) ;; |
||||
|
*) return;; |
||||
|
esac |
||||
|
#+end_src |
||||
|
|
||||
|
Don't put duplicate lines or lines starting with space in the history. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
HISTCONTROL=ignoreboth |
||||
|
#+end_src |
||||
|
|
||||
|
Append to the history file, don't overwrite it. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
shopt -s histappend |
||||
|
#+end_src |
||||
|
|
||||
|
For setting history length see ~HISTSIZE~ and ~HISTFILESIZE~. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
HISTSIZE=1000 |
||||
|
HISTFILESIZE=2000 |
||||
|
#+end_src |
||||
|
|
||||
|
Check the window size after each command and, if necessary, update the values of ~LINES~ and ~COLUMNS~. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
shopt -s checkwinsize |
||||
|
#+end_src |
||||
|
|
||||
|
If set, the pattern ="**"= used in a pathname expansion context will match all files and zero or more directories and subdirectories. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
#shopt -s globstar |
||||
|
#+end_src |
||||
|
|
||||
|
Make less more friendly for non-text input files. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" |
||||
|
#+end_src |
||||
|
|
||||
|
Set variable identifying the chroot you work in (used in the prompt below). |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then |
||||
|
debian_chroot=$(cat /etc/debian_chroot) |
||||
|
fi |
||||
|
#+end_src |
||||
|
|
||||
|
Set a fancy prompt (non-color, unless we know we "want" color). |
||||
|
|
||||
|
#+begin_src shell |
||||
|
case "$TERM" in |
||||
|
xterm-color|*-256color) color_prompt=yes;; |
||||
|
esac |
||||
|
#+end_src |
||||
|
|
||||
|
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. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
#force_color_prompt=yes |
||||
|
#+end_src |
||||
|
|
||||
|
If we have color support; assume it's compliant with =Ecma-48 (ISO/IEC-6429)=. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -n "$force_color_prompt" ]; then |
||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then |
||||
|
color_prompt=yes |
||||
|
else |
||||
|
color_prompt= |
||||
|
fi |
||||
|
fi |
||||
|
#+end_src |
||||
|
|
||||
|
Lack of such support is extremely rare, and such a case would tend to support ~setf~ rather than ~setaf~. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
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 |
||||
|
#+end_src |
||||
|
|
||||
|
If this is an xterm set the title to ~user@host:dir~. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
case "$TERM" in |
||||
|
xterm*|rxvt*) |
||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" |
||||
|
;; |
||||
|
*) |
||||
|
;; |
||||
|
esac |
||||
|
#+end_src |
||||
|
|
||||
|
Enable color support of ~ls~ and also add handy aliases. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -x /usr/bin/dircolors ]; then |
||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" |
||||
|
alias ls='ls --color=auto' |
||||
|
#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 |
||||
|
#+end_src |
||||
|
|
||||
|
Colored =GCC= warnings and errors. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' |
||||
|
#+end_src |
||||
|
|
||||
|
Some more ~ls~ aliases. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
alias ll='ls -alF' |
||||
|
alias la='ls -A' |
||||
|
alias l='ls -CF' |
||||
|
#+end_src |
||||
|
|
||||
|
Add an ~alert~ alias for long running commands. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
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$//'\'')"' |
||||
|
#+end_src |
||||
|
|
||||
|
Use like so: |
||||
|
|
||||
|
#+begin_example |
||||
|
sleep 10; alert |
||||
|
#+end_example |
||||
|
|
||||
|
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. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -f ~/.bash_aliases ]; then |
||||
|
. ~/.bash_aliases |
||||
|
fi |
||||
|
#+end_src |
||||
|
|
||||
|
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~. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
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 |
||||
|
#+end_src |
||||
|
|
||||
|
* Profile |
||||
|
:PROPERTIES: |
||||
|
:header-args: :tangle ~/.local/source/dotfiles/config/shell/profile :results silent |
||||
|
:END: |
||||
|
|
||||
|
Executed by the command interpreter for login shells. |
||||
|
|
||||
|
This file is *not* read by bash, if ~~/.bash_profile~ or ~~/.bash_login~ exists. See =/usr/share/doc/bash/examples/startup-files= for examples. The files are located in the bash-doc package. |
||||
|
|
||||
|
The default umask is set in ~/etc/profile~. For =SSH= logins, install and configure the =libpam-umask= package. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
#umask 022 |
||||
|
#+end_src |
||||
|
|
||||
|
If we're running =bash= make sure to include ~~/.bashrc~ if it exists. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -n "$BASH_VERSION" ]; then |
||||
|
if [ -f "$HOME/.bashrc" ]; then |
||||
|
. "$HOME/.bashrc" |
||||
|
fi |
||||
|
fi |
||||
|
#+end_src |
||||
|
|
||||
|
Add private bin directories to the ~$PATH~ (if they exist). |
||||
|
+ ~$HOME/bin~ |
||||
|
+ ~$HOME/.local/bin~ |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -d "$HOME/bin" ]; then |
||||
|
PATH="$HOME/bin:$PATH" |
||||
|
fi |
||||
|
if [ -d "$HOME/.local/bin" ]; then |
||||
|
PATH="$HOME/.local/bin:$PATH" |
||||
|
fi |
||||
|
#+end_src |
||||
|
|
||||
|
Add ~$HOME/go/bin~ to the ~$PATH~ if it exists. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -d "$HOME/go/bin" ]; then |
||||
|
PATH="$HOME/go/bin:$PATH" |
||||
|
fi |
||||
|
#+end_src |
||||
|
|
||||
|
Auto run =startx= on login if there's no display server running. |
||||
|
|
||||
|
#+begin_src shell |
||||
|
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then |
||||
|
exec startx |
||||
|
fi |
||||
|
#+end_src |
@ -0,0 +1,81 @@ |
|||||
|
case $- in |
||||
|
*i*) ;; |
||||
|
*) return;; |
||||
|
esac |
||||
|
|
||||
|
HISTCONTROL=ignoreboth |
||||
|
|
||||
|
shopt -s histappend |
||||
|
|
||||
|
HISTSIZE=1000 |
||||
|
HISTFILESIZE=2000 |
||||
|
|
||||
|
shopt -s checkwinsize |
||||
|
|
||||
|
#shopt -s globstar |
||||
|
|
||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" |
||||
|
|
||||
|
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then |
||||
|
debian_chroot=$(cat /etc/debian_chroot) |
||||
|
fi |
||||
|
|
||||
|
case "$TERM" in |
||||
|
xterm-color|*-256color) color_prompt=yes;; |
||||
|
esac |
||||
|
|
||||
|
#force_color_prompt=yes |
||||
|
|
||||
|
if [ -n "$force_color_prompt" ]; then |
||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then |
||||
|
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 |
||||
|
|
||||
|
case "$TERM" in |
||||
|
xterm*|rxvt*) |
||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" |
||||
|
;; |
||||
|
*) |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
if [ -x /usr/bin/dircolors ]; then |
||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" |
||||
|
alias ls='ls --color=auto' |
||||
|
#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 |
||||
|
|
||||
|
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' |
||||
|
|
||||
|
alias ll='ls -alF' |
||||
|
alias la='ls -A' |
||||
|
alias l='ls -CF' |
||||
|
|
||||
|
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$//'\'')"' |
||||
|
|
||||
|
if [ -f ~/.bash_aliases ]; then |
||||
|
. ~/.bash_aliases |
||||
|
fi |
||||
|
|
||||
|
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 |
@ -0,0 +1,22 @@ |
|||||
|
#umask 022 |
||||
|
|
||||
|
if [ -n "$BASH_VERSION" ]; then |
||||
|
if [ -f "$HOME/.bashrc" ]; then |
||||
|
. "$HOME/.bashrc" |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
if [ -d "$HOME/bin" ]; then |
||||
|
PATH="$HOME/bin:$PATH" |
||||
|
fi |
||||
|
if [ -d "$HOME/.local/bin" ]; then |
||||
|
PATH="$HOME/.local/bin:$PATH" |
||||
|
fi |
||||
|
|
||||
|
if [ -d "$HOME/go/bin" ]; then |
||||
|
PATH="$HOME/go/bin:$PATH" |
||||
|
fi |
||||
|
|
||||
|
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then |
||||
|
exec startx |
||||
|
fi |
@ -0,0 +1 @@ |
|||||
|
exec dbus-launch --exit-with-session emacs -mm --debug-init |
Write
Preview
Loading…
Cancel
Save
Reference in new issue