X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=.bashrc;h=6780da6b0717979d282be522c1cba33a44d02eca;hp=da70b0726f1ae5221626d84a31562693ce9d3f63;hb=6f1f8a104c9b38936ade2d27e835479523985133;hpb=1a9542b37443a84e55e175db8ddef4e99f434fb5 diff --git a/.bashrc b/.bashrc index da70b07..6780da6 100644 --- a/.bashrc +++ b/.bashrc @@ -19,10 +19,13 @@ # 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 @@ -30,26 +33,40 @@ # 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