# And we don't keep the rest of the code in this file, because even
# though we return, we already parsed the whole code, and as I develop
# the code, the parsing can have errors, which can screw up cronjobs
-# etc. To test for an overriding condition, we have a few options. one
-# is to use an environment variable. env variables sent across ssh are
+# etc.
+#
+# To test for an overriding condition, we have a few options. one is to
+# use an environment variable. env variables sent across ssh are
# strictly limited. ssh -t which sets $SSH_TTY, but within a script that
-# won't work because tty allocation will fail. We could override an
+# won't work because tty allocation will fail. However, I do use -t for
+# strange hosts, so we consider it an indicator. We could override an
# obscure unused LC_var, like telephone, but I don't want to run into
# some edge case where that messes things up. we could transfer a file
# which we could test for, but I can't think of a way to make that
# and AcceptEnv ssh config vars to allow the environment variable
# BASH_LOGIN_SHELL to propagate across ssh. This also requires that we
# wrap ssh in interactive shells, because, once we export the var, it
-# will go into scripts and theres no way to automatically set it.
-
-
-# first conditions show that we are an ssh command without an interactive shell
+# will go into scripts, and we want it to be nondefault there.
+#
+# -c is set whenever a command is passed to ssh
+# -i is set whenever a command is not passed
if [[ $SSH_CONNECTION ]] \
- && [[ $- == *c* ]] \
- && [[ ! $SSH_TTY ]] \
- && [[ $- != *i* ]] \
- && [[ $BASH_LOGIN_SHELL != true ]]; then
- return 0
+ && [[ $- == *c* ]] \
+ && [[ $- != *i* ]] \
+ && { [[ ! $SSH_TTY ]] || [[ $BASH_LOGIN_SHELL == false ]] ; } ; then
+ return 0
else
+
+ # the distinction between login and non-login shells is lame,
+ # get rid of it. note ssh shells normally its login if a command is passed
+ if ! shopt -q login_shell; then
if [[ -r /etc/profile ]]; then
- source /etc/profile
- fi
- _x=$(readlink -f ${BASH_SOURCE[0]})
- _x=${_x%/*}/brc
- if [[ -r $_x ]]; then
- # shellcheck source=./brc
- source $_x
+ source /etc/profile
fi
+ # note, this is not exactly the same as a login shell, because that
+ # reads ~/.bash_profile or alternative, which usually just sources
+ # this file, and we don't want to do that and cause an infinite
+ # loop.
+ fi
+ _x=$(readlink -f ${BASH_SOURCE[0]})
+ _x=${_x%/*}/brc
+ if [[ -r $_x ]]; then
+ # shellcheck source=./brc
+ source $_x
+ fi
+ # brc2 is for things i dont necessarily want on every system
+ _x=${_x%/*}/brc2
+ if [[ -r $_x ]]; then
+ # shellcheck source=./brc2
+ source $_x
+ fi
fi
# ensure no bad programs appending to this file will have an affect
return 0