shells: Refactor include logic - dotfiles - arsenal of config files, ready to be cloned in new (virtual) machines.
HTML git clone git://git.drkhsh.at/dotfiles.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
---
DIR commit 1f98c19046bc2768f2438c0b7d00123ae63ffdb0
DIR parent 3731f5a787866aaad6f4464494a0fb931793f54c
HTML Author: drkhsh <me@drkhsh.at>
Date: Wed, 1 Feb 2023 22:06:36 +0100
shells: Refactor include logic
Kicks .profile (conflicts with distro's .profile - and /etc/profile in
Qubes OS too much) - and it won't be sourced when logged in over SSH (no
login shell). Uses .env instead (sourced from each shell's rc).
Correctly undefines the exists helper in all shells and moves it's
definition too each shell's config to fix breakage when common functions
are not installed.
Diffstat:
M bash/.bashrc | 13 +++++++++++--
M fish/.config/fish/config.fish | 12 ++++++++++--
D fish/.config/fish/functions/_exist… | 3 ---
M mksh/.mkshrc | 4 ++++
A shell/.env | 33 +++++++++++++++++++++++++++++++
M shell/.functions | 5 -----
D shell/.profile | 48 -------------------------------
D zsh/.zprofile | 2 --
M zsh/.zshrc | 11 +++++++++--
9 files changed, 67 insertions(+), 64 deletions(-)
---
DIR diff --git a/bash/.bashrc b/bash/.bashrc
@@ -11,13 +11,20 @@
# ██████████║
# ╚═════════╝
+# █▓▒░ exists helper
+_exists() {
+ type $1 > /dev/null 2>&1
+}
+
# █▓▒░ source shared stuff
-[[ -f ~/.functions ]] && source ~/.functions
+[[ -f ~/.env ]] && source ~/.env
[[ -f ~/.aliases ]] && source ~/.aliases
+[[ -f ~/.functions ]] && source ~/.functions
# █▓▒░ qubes templates
-[[ -f /etc/drkhsh.functions ]] && source /etc/drkhsh.functions
+[[ -f /etc/drkhsh.env ]] && source /etc/drkhsh.env
[[ -f /etc/drkhsh.aliases ]] && source /etc/drkhsh.aliases
+[[ -f /etc/drkhsh.functions ]] && source /etc/drkhsh.functions
# █▓▒░ general
bind 'set bell-style none'
@@ -37,3 +44,5 @@ fi
# █▓▒░ starship prompt
_exists starship && eval "$(starship init bash)"
+# █▓▒░ undefine exists helper
+unset -f _exists
DIR diff --git a/fish/.config/fish/config.fish b/fish/.config/fish/config.fish
@@ -14,6 +14,9 @@
# 48 @%
# '8 drkhsh <me@drkhsh.at> :"
+# █▓▒░ exists helper
+function _exists; type -q $argv; end
+
# █▓▒░ foreign-env plugin
test -d ~/.config/fish/plugin-foreign-env/functions && \
set fish_function_path $fish_function_path ~/.config/fish/plugin-foreign-env/functions
@@ -22,10 +25,13 @@ test -d /etc/fish/plugin-foreign-env/functions && \
# █▓▒░ source profile for compatibility
fenv source /etc/profile
-test -f ~/.profile && fenv source ~/.profile
-# █▓▒░ aliases
+# █▓▒░ shared enviornment & aliases
+test -f ~/.env && fenv source ~/.env
test -f ~/.aliases && source ~/.aliases
+
+# █▓▒░ qubes templates
+test -f ~/etc/drkhsh.env && source /etc/drkhsh.env
test -f ~/etc/drkhsh.aliases && source /etc/drkhsh.aliases
# █▓▒░ machine-specific fish config
@@ -35,3 +41,5 @@ test -f ~/.config/fish/config.fish.local && source ~/.config/fish/config.fish.lo
set -U fish_greeting "🐟"
starship init fish | source
+# █▓▒░ undefine exists helper
+functions -e _exists
DIR diff --git a/fish/.config/fish/functions/_exists.fish b/fish/.config/fish/functions/_exists.fish
@@ -1,3 +0,0 @@
-# █▓▒░ exists helper
-function _exists; type -q $argv; end
-
DIR diff --git a/mksh/.mkshrc b/mksh/.mkshrc
@@ -14,10 +14,12 @@
# █▓▒░ source shared stuff
[[ -f ~/.functions ]] && source ~/.functions
[[ -f ~/.aliases ]] && source ~/.aliases
+[[ -f ~/.env ]] && source ~/.env
# █▓▒░ qubes templates
[[ -f /etc/drkhsh.functions ]] && source /etc/drkhsh.functions
[[ -f /etc/drkhsh.aliases ]] && source /etc/drkhsh.aliases
+[[ -f /etc/drkhsh.env ]] && source /etc/drkhsh.env
# █▓▒░ history
HISTFILE=~/.mksh_history
@@ -31,3 +33,5 @@ fi
# █▓▒░ prompt
_exists polyglot && source polyglot
+# █▓▒░ undefine exists helper
+unset -f _exists
DIR diff --git a/shell/.env b/shell/.env
@@ -0,0 +1,33 @@
+# █▓▒░ pager
+if type less >/dev/null 2>&1; then
+ PAGER=less
+ LESSHISTFILE=-
+ export PAGER LESSHISTFILE
+fi
+
+export MANWIDTH=80
+type systemctl >/dev/null 2>&1 && export SYSTEMD_PAGER=
+
+# █▓▒░ editor
+if [ -z "$VISUAL" ]; then
+ type vim >/dev/null 2>&1 && VISUAL=vim || VISUAL=vi
+ export VISUAL
+fi
+EDITOR=$VISUAL
+export EDITOR
+
+# █▓▒░ include user PATH
+if [ -d "$HOME/bin" ] ; then
+ PATH="$HOME/bin:$PATH"
+fi
+if [ -d "$HOME/.local/bin" ] ; then
+ PATH="$HOME/.local/bin:$PATH"
+fi
+export PATH
+
+# █▓▒░ include cargo path if necessary
+type cargo >/dev/null 2>&1 && export PATH=$PATH:/home/drkhsh/.cargo/bin
+
+# █▓▒░ machine-specific env
+[ ! -r "$HOME/.env.local" ] || . "$HOME/.env.local"
+
DIR diff --git a/shell/.functions b/shell/.functions
@@ -1,8 +1,3 @@
-# █▓▒░ exists helper
-_exists() {
- type $1 > /dev/null
-}
-
# █▓▒░ deeply nested folders
up() {
if [[ "$#" < 1 ]] ; then
DIR diff --git a/shell/.profile b/shell/.profile
@@ -1,48 +0,0 @@
-# ___ __ __
-# .-----.----.-----.' _|__| |.-----.
-# .-.| _ | _| _ | _| | || -__|
-# |_|| __|__| |_____|__| |__|__||_____|
-# |__| drkhsh <me@drkhsh.at>
-
-# █▓▒░ pager
-if type less >/dev/null 2>&1; then
- PAGER=less
- LESSHISTFILE=-
- export PAGER LESSHISTFILE
-fi
-
-export MANWIDTH=80
-type systemctl >/dev/null 2>&1 && export SYSTEMD_PAGER=
-
-# █▓▒░ editor
-if [ -z "$VISUAL" ]; then
- type vim >/dev/null 2>&1 && VISUAL=vim || VISUAL=vi
- export VISUAL
-fi
-EDITOR=$VISUAL
-export EDITOR
-
-# █▓▒░ if running bash
-if [ -n "$BASH_VERSION" ]; then
- if [ -f "$HOME/.bashrc" ]; then
- . "$HOME/.bashrc"
- fi
-fi
-
-# █▓▒░ include user PATH
-if [ -d "$HOME/bin" ] ; then
- PATH="$HOME/bin:$PATH"
-fi
-if [ -d "$HOME/.local/bin" ] ; then
- PATH="$HOME/.local/bin:$PATH"
-fi
-
-# █▓▒░ include cargo path if necessary
-type cargo >/dev/null 2>&1 && export PATH=$PATH:/home/drkhsh/.cargo/bin
-
-# █▓▒░ machine-specific profile
-[ ! -r "$HOME/.profile.local" ] || . "$HOME/.profile.local"
-if [ -r "$HOME/.env.local" ]; then
- eval "`command grep '^[A-Z].*=' "$HOME/.env.local"|sed -e 's/^/export /'`"
-fi
-
DIR diff --git a/zsh/.zprofile b/zsh/.zprofile
@@ -1,2 +0,0 @@
-# █▓▒░ load common shell profile
-[[ -e ~/.profile ]] && emulate sh -c '. ~/.profile'
DIR diff --git a/zsh/.zshrc b/zsh/.zshrc
@@ -11,13 +11,20 @@
# ██████████║
# ╚═════════╝
+# █▓▒░ exists helper
+_exists() {
+ type $1 > /dev/null 2>&1
+}
+
# █▓▒░ source shared stuff
-[[ -f ~/.functions ]] && source ~/.functions
+[[ -f ~/.env ]] && source ~/.env
[[ -f ~/.aliases ]] && source ~/.aliases
+[[ -f ~/.functions ]] && source ~/.functions
# █▓▒░ qubes templates
-[[ -f /etc/drkhsh.functions ]] && source /etc/drkhsh.functions
+[[ -f /etc/drkhsh.env ]] && source /etc/drkhsh.env
[[ -f /etc/drkhsh.aliases ]] && source /etc/drkhsh.aliases
+[[ -f /etc/drkhsh.functions ]] && source /etc/drkhsh.functions
# █▓▒░ general
setopt nobeep