minor bug fix
[distro-setup] / .bashrc
diff --git a/.bashrc b/.bashrc
index da70b0726f1ae5221626d84a31562693ce9d3f63..ac3ec039e4d35ea9e63723692b173836776a3978 100644 (file)
--- a/.bashrc
+++ b/.bashrc
@@ -9,47 +9,44 @@
 #exec 2>>/a/tmp/bashlog
 
 
-# By default this file is sourced for ALL ssh commands. This is wonky.
-# Normally, this file is not sourced when a script is run, but we can
-# override that by having #!/bin/bash -l.  I want something similar for ssh
-# commands. when a local script runs an ssh command, this file should not be
-# sourced by default, but we should be able to override that.
-#
-# So here we test for conditions of a script under ssh and return if so.
-# 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
-# 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
-# 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
-# inherently limited to a single ssh command.  I choose to set SendEnv
-# 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
+# see comments in brc2 sl() function for background.
 if [[ $SSH_CONNECTION ]] \
-       && [[ $- == *c* ]] \
-       && [[ ! $SSH_TTY ]] \
-       && [[ $- != *i* ]] \
-       && [[ $BASH_LOGIN_SHELL != true ]]; then
-    return 0
+     && [[ $BRC != t ]];  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
+      source /etc/profile
     fi
-    _x=$(readlink -f ${BASH_SOURCE[0]})
-    _x=${_x%/*}/brc
-    if [[ -r $_x ]]; then
-      # shellcheck source=./brc
-        source $_x
+    # 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
+  _tmp=$(readlink -f ${BASH_SOURCE[0]})
+  _tmp=${_tmp%/*}
+  _tmp2=$_tmp/brc
+  if [[ -s $_tmp2 ]]; then
+    # shellcheck source=./brc
+    source $_tmp2
+  fi
+  # brc2 is for things i dont necessarily want on every system
+  _tmp2=$_tmp/brc2
+  if [[ -s $_tmp2 ]]; then
+    # shellcheck source=./brc2
+    source $_tmp2
+  else
+    # This check is for when running the sl() command,
+    # and the remote host got its type misidentified.
+    _tmp2=$_tmp/../brc2
+    if [[ -s $_tmp2 ]]; then
+      # shellcheck source=./brc2
+      source $_tmp2
     fi
+  fi
 fi
 # ensure no bad programs appending to this file will have an affect
 return 0