bash: various tweaks
authorAmin Bandali <bandali@gnu.org>
Sun, 14 Apr 2019 19:36:58 +0000 (15:36 -0400)
committerAmin Bandali <bandali@gnu.org>
Sun, 14 Apr 2019 19:36:58 +0000 (15:36 -0400)
- new include helper for checking if arg is a regular and readable
  file, then sourcing it
- set VISUAL editor
- fix prompt to show an additional character when abbreviated folder’s
  name starts with a dot

.bash_profile
.bashrc
.profile

index d5f7cc9..f41056d 100644 (file)
@@ -1,2 +1,7 @@
-[[ -f ~/.profile ]] && . ~/.profile
-[[ -f ~/.bashrc ]] && . ~/.bashrc
+include () {
+    [[ -f "$1" && -r "$1" ]] && source "$1"
+}
+
+include ~/.profile
+include ~/.nix-profile/etc/profile.d/nix.sh
+include ~/.bashrc
diff --git a/.bashrc b/.bashrc
index cce2dc8..f4fa270 100644 (file)
--- a/.bashrc
+++ b/.bashrc
@@ -1,15 +1,26 @@
+# If not running interactively, don't do anything else
+[[ $- != *i* ]] && return
+
+# i-beam cursor
+# echo -e "\033[5 q"              # blinking
+echo -e "\033[6 q"              # non-blinking
+
 # various bash tweaks
 shopt -s histappend
 shopt -s cmdhist
 HISTSIZE=
 HISTFILESIZE=
 HISTCONTROL=ignoreboth
 # various bash tweaks
 shopt -s histappend
 shopt -s cmdhist
 HISTSIZE=
 HISTFILESIZE=
 HISTCONTROL=ignoreboth
-HISTIGNORE='ls:l:s:bg:fg:history'
+HISTIGNORE='ls:l:s:g:[bf]g:history'
 HISTTIMEFORMAT='%F %T '
 stty stop ""
 
 # aliases
 alias ls='ls --color=auto'
 HISTTIMEFORMAT='%F %T '
 stty stop ""
 
 # aliases
 alias ls='ls --color=auto'
+alias l='ls -lh'                # long format and human-readable sizes
+alias ll='l -A'                 # long format, all files
+alias g='git'
+include /usr/share/bash-completion/completions/git && __git_complete g _git
 alias mpv="mpv --ytdl-format mp4"
 alias mv="mv -iv"
 alias cp="cp -iv"
 alias mpv="mpv --ytdl-format mp4"
 alias mv="mv -iv"
 alias cp="cp -iv"
@@ -24,16 +35,13 @@ aur() {
    cd ${1}
 }
 
    cd ${1}
 }
 
-# i-beam cursor
-# echo -e "\033[5 q"              # blinking
-echo -e "\033[6 q"              # non-blinking
-
-
-# If not running interactively, don't do anything else
-[[ $- != *i* ]] && return
+# fzf
+include /usr/share/fzf/key-bindings.bash
+include /usr/share/fzf/completion.bash
 
 
+# from https://unix.stackexchange.com/a/55935
 a_prompt() {
 a_prompt() {
-    cwd=$(pwd | sed -e "s!$HOME!~!" | sed -re "s!([^/])[^/]+/!\1/!g")
+    cwd=$(sed -e "s:$HOME:~:" -e "s:\(\.\?[^/]\)[^/]*/:\1/:g" <<<$PWD)
     printf $cwd
 }
 PS1="\u@\h \$(a_prompt)> "
     printf $cwd
 }
 PS1="\u@\h \$(a_prompt)> "
index 1875805..3d0b45c 100644 (file)
--- a/.profile
+++ b/.profile
@@ -1,3 +1,5 @@
+export VISUAL="emacsclient -c"
+
 export PATH="$HOME/.local/bin:$HOME/.cabal/bin:$HOME/.cargo/bin:$HOME/.elan/bin${PATH:+:}$PATH"
 
 export XDG_CONFIG_HOME="$HOME/.config"
 export PATH="$HOME/.local/bin:$HOME/.cabal/bin:$HOME/.cargo/bin:$HOME/.elan/bin${PATH:+:}$PATH"
 
 export XDG_CONFIG_HOME="$HOME/.config"
@@ -7,11 +9,12 @@ export XDG_DATA_DIRS="/usr/local/share:/usr/share"
 export MAILDIR="$HOME/mail"
 export CVS_RSH="ssh"
 
 export MAILDIR="$HOME/mail"
 export CVS_RSH="ssh"
 
-export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
-export PATH="$HOME/.config/guix/current/bin${PATH:+:}$PATH"
-export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
-export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
-export GIT_SSL_CAINFO="$SSL_CERT_FILE"
+if [ -x "$(command -v guix)" ]; then
+    export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
+    export PATH="$HOME/.config/guix/current/bin${PATH:+:}$PATH"
+    export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
+    export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
+    export GIT_SSL_CAINFO="$SSL_CERT_FILE"
+fi
 
 export NIXPKGS="$HOME/src/git/nixpkgs"
 
 export NIXPKGS="$HOME/src/git/nixpkgs"
-if [ -e $HOME/.nix-profile/etc/profile.d/nix.sh ]; then . $HOME/.nix-profile/etc/profile.d/nix.sh; fi