From 5ab5ccd94bda49db30e7c600364cc4e14e88df9b Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 17 Dec 2016 20:03:40 +1300 Subject: Move ksh.sh shim into ksh subdir So it doesn't get installed on systems where I don't use ksh, since it's mostly not needed --- ksh/shrc.d/ksh.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 ksh/shrc.d/ksh.sh (limited to 'ksh/shrc.d/ksh.sh') diff --git a/ksh/shrc.d/ksh.sh b/ksh/shrc.d/ksh.sh new file mode 100644 index 00000000..6c134e88 --- /dev/null +++ b/ksh/shrc.d/ksh.sh @@ -0,0 +1,30 @@ +# If we're running some kind of ksh, we'll need to source its specific +# configuration if it was defined or if we can find it. Bash and Zsh invoke +# their own rc files first, which I've written to then look for ~/.shrc; ksh +# does it the other way around. + +# Unfortunately, this isn't very simple, because KSH_VERSION is set by PDKSH +# and derivatives, and in ksh93t+ and above, but not in earlier versions of +# ksh93. + +# If it's not already set, we'll try hard to set it to something before we +# proceed ... +if [ -z "$KSH_VERSION" ] ; then + + # Test whether we have content in the .sh.version variable. The odd name + # causes at least Bash to panic, so we suppress errors, and we run it in a + # subshell to work around parsing error precedence. + ( test -n "${.sh.version}" ) 2>/dev/null || return + + # If it is, that's our KSH_VERSION + KSH_VERSION=${.sh.version} +fi + +# If KSH_ENV isn't already set, set it +[ -n "$KSH_ENV" ] || KSH_ENV=$HOME/.kshrc + +# Check the file named in KSH_ENV exists +[ -f "$KSH_ENV" ] || return + +# Source it (finally) +. "$KSH_ENV" -- cgit v1.2.3