diff --git a/.bashrc b/.bashrc
index 6a82356098d37dccfd5eb8f0d8cd00e72fdef02d..c025c9ee382bb0c2a6a74a1001d305f2c37d0079 100644
--- a/.bashrc
+++ b/.bashrc
@@ -113,7 +113,6 @@ alias rc_make="make --directory $HOME --always-make"
 alias rc_update="rc_make vendored generated"
 alias gen-ssh-config="rc_make .ssh/config"
 alias bfg='java -jar $HOME/.local/share/bfg/bfg.jar'
-alias prune_docker_remote='find ~/.ssh -maxdepth 1 -type s -name "docker_*" -exec rm {} \;'
 alias close='ssh -fnNTS ~/.ssh/%C.sock -O exit'
 alias jjb='jenkins-jobs'
 alias diff='diff --unified'
@@ -294,6 +293,13 @@ flatpak_kill () {
     fi
 }
 
+__prune_docker_remote () {
+    for i in ~/.ssh/docker_*
+    do
+        [ ! -e "$i" ] || lsof -t "$i" >/dev/null || rm "$i"
+    done
+}
+
 __prompt () {
     local exitstatus="$?"
     local runduration endtime pre_prompt
@@ -377,4 +383,4 @@ then
     ! command -v direnv > /dev/null || eval "$(direnv hook bash)"
 fi
 
-prune_docker_remote
+__prune_docker_remote
diff --git a/Documents/bin/_docker-remote b/Documents/bin/_docker-remote
index 423d7f2785833a5884cc9ac3752fea26fb8c875c..81cd615e010e9bfe7ebab031a4d85d956439a896 100755
--- a/Documents/bin/_docker-remote
+++ b/Documents/bin/_docker-remote
@@ -5,7 +5,8 @@ set -eu
 host="$1"
 localsocket="$HOME/.ssh/docker_$host.sock"
 
-lsof -t "$localsocket" > /dev/null 2>&1 || rm -f "$localsocket"
+[ ! -e "$localsocket" ] || lsof -f "$localsocket" >/dev/null || rm "$localsocket"
+
 forward "$host" "$localsocket:/var/run/docker.sock" > /dev/null 2>&1
 
 # Echo the DOCKER_HOST export command, for eval'ing.