|
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.
|