fix ssh wrapper
[distro-setup] / brc2
diff --git a/brc2 b/brc2
index 577631eed08c9a7a19161fc046d5047af73ebb82..2bfb6775fc43c4c8f25ddb2ea61880336e891713 100644 (file)
--- a/brc2
+++ b/brc2
@@ -273,11 +273,11 @@ dup() {
   local ran_d
   ran_d=false
   case $PS1 in
-    *DISTRO-BEGIN*)
+    *DISTRO-BEGIN!*|*DISTRO!*)
       /b/ds/distro-begin || return $?
       ran_d=true
       ;;&
-    *DISTRO-END*)
+    *DISTRO-END!*|*DISTRO!*)
       /b/ds/distro-end || return $?
       ran_d=true
       ;;&
@@ -938,13 +938,21 @@ sl() {
       # Theres a couple ways to do this. im not sure whats best,
       # but relying on bash 4.4+ escape quoting seems most reliable.
       command ssh "${args[@]}" "$remote" \
-              BRC=t bash -c '"\"\$@\""' bash ${@@Q}
+              BRC=t bash -c '.\ .iank/.bashrc\;"\"\$@\""' bash ${@@Q}
+    elif [[ ! -t 0 ]]; then
+      # This case is when commands are being piped to ssh.
+      # Normally, no bashrc gets sourced.
+      # But, since we are doing all this, lets source it because we can.
+      cat <(echo . .iank/.bashrc) - | command ssh "${args[@]}" "$remote" BRC=t bash
     else
-      # -t gives us an interactive shell for normal ssh. -l makes us use the rcfile when piping commands.
-      command ssh -t "${args[@]}" "$remote" BRC=t INPUTRC=.iank/.inputrc bash --rcfile .iank/.bashrc -l
+      command ssh -t "${args[@]}" "$remote" BRC=t INPUTRC=.iank/.inputrc bash --rcfile .iank/.bashrc
     fi
   else
-    BRC=t command ssh "$remote" "$@"
+    if [[ -t 0 ]]; then
+      BRC=t command ssh "${args[@]}" "$remote" ${@@Q}
+    else
+      command ssh "${args[@]}" "$remote" BRC=t bash -l
+    fi
   fi
 }
 sss() { # ssh solo