minor bug fix
[distro-setup] / .bashrc
diff --git a/.bashrc b/.bashrc
index d0c4b02f6bff6fbbbdc4c647a5ecbbea8812416a..ac3ec039e4d35ea9e63723692b173836776a3978 100644 (file)
--- a/.bashrc
+++ b/.bashrc
@@ -1,16 +1,6 @@
-# Copyright (C) 2016 Ian Kelling
-
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-
-#     http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+#!/bin/bash
+# Copyright (C) 2019 Ian Kelling
+# SPDX-License-Identifier: AGPL-3.0-or-later
 
 # to debug
 #set -x
 #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.
-
-# assume we want ssh commands to source this file if we are sourcing it,
-# and we haven't specified otherwise already
-[[ ! $BASH_LOGIN_SHELL ]] && export BASH_LOGIN_SHELL=true
-#BASH_LOGIN_SHELL=false # temporary override
-
-# 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
+     && [[ $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)
-    _x=${_x%/*}/brc
-    if [[ -r $_x ]]; then
-        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