X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=.bashrc;h=ac3ec039e4d35ea9e63723692b173836776a3978;hp=6780da6b0717979d282be522c1cba33a44d02eca;hb=79b274fcd8bfa556133ab13270e84b40aebe8468;hpb=6f1f8a104c9b38936ade2d27e835479523985133 diff --git a/.bashrc b/.bashrc index 6780da6..ac3ec03 100644 --- a/.bashrc +++ b/.bashrc @@ -9,38 +9,9 @@ #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. 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 -# 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 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 +# see comments in brc2 sl() function for background. if [[ $SSH_CONNECTION ]] \ - && [[ $- == *c* ]] \ - && [[ $- != *i* ]] \ - && { [[ ! $SSH_TTY ]] || [[ $BASH_LOGIN_SHELL == false ]] ; } ; then + && [[ $BRC != t ]]; then return 0 else @@ -55,17 +26,26 @@ else # 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 + _tmp=$(readlink -f ${BASH_SOURCE[0]}) + _tmp=${_tmp%/*} + _tmp2=$_tmp/brc + if [[ -s $_tmp2 ]]; then # shellcheck source=./brc - source $_x + source $_tmp2 fi # brc2 is for things i dont necessarily want on every system - _x=${_x%/*}/brc2 - if [[ -r $_x ]]; then + _tmp2=$_tmp/brc2 + if [[ -s $_tmp2 ]]; then # shellcheck source=./brc2 - source $_x + 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