aboutsummaryrefslogtreecommitdiff
path: root/README.markdown
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-12-03 00:22:17 +1300
committerTom Ryder <tom@sanctum.geek.nz>2016-12-03 00:22:17 +1300
commit3135b4ce8d5974e1dee530928a8aacffe7eac433 (patch)
treef836bd76271f7c313286bc3ebe69376a0cf45f80 /README.markdown
parentColor compatibility fixes for tlcs(1df) (diff)
downloaddotfiles-3135b4ce8d5974e1dee530928a8aacffe7eac433.tar.gz
dotfiles-3135b4ce8d5974e1dee530928a8aacffe7eac433.zip
Split ~/.shrc off stub ~/.shinit file
NetBSD sh(1) and possible others don't tolerate a `return` short-circuit for ENV, which means that because that implementation also sources ENV if set regardless of whether the shell is interactive or not, all of the interactive stuff in ~/.shrc and ~/.shrc.d gets uselessly sourced and loaded up for non-interactive invocations of sh(1). To work around this, I've set ENV to be a new ~/.shinit file instead, which sources the ~/.shrc file only if the shell is interactive. ~/.shinit is the filename suggested in the man page for NetBSD sh(1) and Debian dash(1) as well. NetBSD's documented behaviour seems to be contrary to POSIX 2003: > ENV: This variable, when and only when an interactive shell is > invoked, shall be subjected to parameter expansion (see Parameter > Expansion ) by the shell, and the resulting value shall be used as a > pathname of a file containing shell commands to execute in the > current environment. No matter; this works fine, and makes non-interactive invocations of sh(1) on NetBSD much faster.
Diffstat (limited to 'README.markdown')
-rw-r--r--README.markdown5
1 files changed, 3 insertions, 2 deletions
diff --git a/README.markdown b/README.markdown
index 22f02d42..fc248800 100644
--- a/README.markdown
+++ b/README.markdown
@@ -97,8 +97,9 @@ they should work in most `sh(1)` implementations. Individual scripts called by
management. Most of these boil down to exporting variables appropriate to the
system and the software it has available.
-Configuration that should be sourced for all POSIX-fearing shells is kept in
-`~/.shrc`, with subscripts read from `~/.shrc.d`.
+Configuration that should be sourced for all POSIX-fearing interactive shells
+is kept in `~/.shrc`, with subscripts read from `~/.shrc.d`. There's a shim in
+`~/.shinit` to act as `ENV`.
I make an effort to target POSIX for my functions and scripts where I can, but
Bash is my interactive shell of choice. My `.bash_profile` calls `.profile`,