aboutsummaryrefslogtreecommitdiff
path: root/sh
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2019-01-01 01:11:08 +1300
committerTom Ryder <tom@sanctum.geek.nz>2019-01-01 01:11:08 +1300
commite19bb8fb3c8350bee288327abd978a59eb3dc0f7 (patch)
tree754d2d883b27477f53f0fece44ef9edc7e4238f0 /sh
parentMerge branch 'release/v4.2.0' (diff)
parentBump VERSION (diff)
downloaddotfiles-954586e6ed7dfbd525e6ec8d1adc4f0c0bc0a48e.tar.gz (sig)
dotfiles-954586e6ed7dfbd525e6ec8d1adc4f0c0bc0a48e.zip
Merge branch 'release/v4.3.0'v4.3.0
* release/v4.3.0: Bump VERSION Switch to using GNU Emacs on development machines Trim some trailing whitespace Clarify control flow in shell scripts Add clarifying comment Translate a short-circuit into a conditional Add a cheeky error message to sd() Strip trailing slashes from sd() target Correct error message from sd()
Diffstat (limited to 'sh')
-rw-r--r--sh/profile.d/visual.sh10
-rw-r--r--sh/shrc6
-rw-r--r--sh/shrc.d/sd.sh16
3 files changed, 27 insertions, 5 deletions
diff --git a/sh/profile.d/visual.sh b/sh/profile.d/visual.sh
index 119d81c7..94aee963 100644
--- a/sh/profile.d/visual.sh
+++ b/sh/profile.d/visual.sh
@@ -1,3 +1,9 @@
-# Use first found implementation of vi(1)
-VISUAL='vi'
+# If emacs is installed, and ~/.emacs exists, use emacs as the visual editor;
+# otherwise, use the system's vi
+if command -v emacs >/dev/null 2>&1 &&
+ [ -f "$HOME"/.emacs ] ; then
+ VISUAL=emacs
+else
+ VISUAL=vi
+fi
export VISUAL
diff --git a/sh/shrc b/sh/shrc
index 808e944d..26f69c0c 100644
--- a/sh/shrc
+++ b/sh/shrc
@@ -8,13 +8,15 @@ command -p stty -ixon -ctlecho 2>/dev/null
HISTSIZE=$((1 << 12))
# If HOSTNAME isn't set by this shell, we'll do it
-[ -n "$HOSTNAME" ] || HOSTNAME=$(uname -n)
+if [ -z "$HOSTNAME" ] ; then
+ HOSTNAME=$(uname -n)
+fi
# Don't warn me about new mail
unset -v MAILCHECK
# Load all the POSIX-compatible functions from ~/.shrc.d; more advanced shells
-# like bash will have their own functions
+# like bash will have their own functions in addition to these
for sh in "$HOME"/.shrc.d/*.sh ; do
[ -e "$sh" ] || continue
. "$sh"
diff --git a/sh/shrc.d/sd.sh b/sh/shrc.d/sd.sh
index 04b50f6d..10597832 100644
--- a/sh/shrc.d/sd.sh
+++ b/sh/shrc.d/sd.sh
@@ -38,12 +38,26 @@ sd() {
return 2
fi
+ # Strip trailing slashes
+ while : ; do
+ case $1 in
+ *?/) set -- "${1%/}" ;;
+ *) break ;;
+ esac
+ done
+
# Read sole optional argument
case $1 in
+ # Root has no siblings
+ /)
+ printf >&2 'sd(): Radical misunderstanding\n'
+ return 2
+ ;;
+
# Slashes aren't allowed
*/*)
- printf >&2 'bd(): Illegal slash\n'
+ printf >&2 'sd(): Illegal slash\n'
return 2
;;