penguin/utils

my env utils

commit ca5d82bb8e85dbfd8e60c6e0bfb313639ac5f9b1

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-07-20T14:33:24Z
subjectcleanup clipboard sock
commit ca5d82bb8e85dbfd8e60c6e0bfb313639ac5f9b1
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-07-20T14:33:24Z

    cleanup clipboard sock
---
 bash/dist/rbashrc                |  2 +-
 bash/dist/rbashrc.asc            | 10 +++++-----
 bash/dist/sources.list           |  2 +-
 bash/sources/42_clipboard_server | 21 +++++++++++++++------
 4 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/bash/dist/rbashrc b/bash/dist/rbashrc
index 9662b89..b0b2c6a 100755
--- a/bash/dist/rbashrc
+++ b/bash/dist/rbashrc
@@ -18,7 +18,7 @@ RBASH_CONFIG="$RBASH_HOME/config"
 RBASH_ENV="$RBASH_HOME/env"
 RBASH_MERGED="$RBASH_CACHE_DIR/merged"
 RBASH_BIN="$RBASH_HOME/bin"
-RBASH_SOURCES_SUM="508ba717f5f31796f03fd176ecb50432a2c3d236896cef066f2cc535369bbca9"
+RBASH_SOURCES_SUM="35fcb5b8248bd42d7b723b59fced636d08e183db39157753f331d6312d497f26"
 
 
 # ---- rbash: bash/core/00_env.bash ----
diff --git a/bash/dist/rbashrc.asc b/bash/dist/rbashrc.asc
index 2a6d8a9..a32eb0d 100644
--- a/bash/dist/rbashrc.asc
+++ b/bash/dist/rbashrc.asc
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNATURE-----
 
-iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCal4d5BsUgAAAAAAEAA5t
-YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8Nd+gD+KJLL3HNcQnM+bcQZovsc
-7Rw8obzGQ37BloiFHmCoufQA/RJkP3WL2zbLlBPrjJcj2IZ/bXRgmQaWtsIddaFN
-HnEI
-=6dLh
+iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCal4xjxsUgAAAAAAEAA5t
+YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8MS8AEAsBsn7/OguDTuudMHR2zj
+qhucXMmwPNog4hWUEZkVJ+gBAOqJ8S/RzrHyZUCaZCytQqgI9aeex6BxxT1jplBH
+bbsM
+=UzMm
 -----END PGP SIGNATURE-----
diff --git a/bash/dist/sources.list b/bash/dist/sources.list
index f48851c..8324fc4 100644
--- a/bash/dist/sources.list
+++ b/bash/dist/sources.list
@@ -13,5 +13,5 @@ b5a488efc0558e2b795a1558e2c91a8aeecc3fd441d437aff3a4749d5eb0bdfc  sources/23_win
 5dbc166ce1b051b54d244ef5dc6b52dfbff03965e9abb0ed891d441dffbf8a76  sources/31_git-utils
 c9c270376844e7c7e3c48b1e86c2ce3e7824dde64e8724c17c5fc95910abd11c  sources/40_go-command
 c0e8ef70466063907b5ed9e52c13532b0019b8cb5975d020899804549a76a37f  sources/41_pivot-command
-986563f225092fbf3514e396f4d651beef63cf7690202f85e2c2c420f386bf54  sources/42_clipboard_server
+27466917308d3a1891937d3c7cdb11f31488f886cb0fecf656c720eec065a05c  sources/42_clipboard_server
 d02be2a68e8bd1f7e5adacbdd0bdc4f426aabfa1a57709270b673617db6c5352  sources/60_diagnostics
diff --git a/bash/sources/42_clipboard_server b/bash/sources/42_clipboard_server
index b4574d1..e7d2059 100644
--- a/bash/sources/42_clipboard_server
+++ b/bash/sources/42_clipboard_server
@@ -10,6 +10,11 @@ SSH_CLIPBOARD_REMOTE_SOCKET="/tmp/ssh-clipboard-client.sock"
 function clipboard_server_running {
 	local pid
 
+	if [ -n "${SSH_CLIPBOARD_REMOTE_SOCKET:-}" ] &&
+		[ -S "$SSH_CLIPBOARD_REMOTE_SOCKET" ]; then
+		return 0
+	fi
+
 	[[ -f "$SSH_CLIPBOARD_PIDFILE" ]] || return 1
 
 	read -r pid < "$SSH_CLIPBOARD_PIDFILE"
@@ -19,6 +24,9 @@ function clipboard_server_running {
 }
 
 function init_clipboard_server {
+	if clipboard_server_running; then
+		return 0
+	fi
 	case "$OSTYPE" in
 		darwin*)
 			command -v socat >/dev/null 2>&1 || {
@@ -32,10 +40,6 @@ function init_clipboard_server {
 				return 1
 			}
 
-			if clipboard_server_running; then
-				return 0
-			fi
-
 			mkdir -p "$SSH_CLIPBOARD_DIR"
 			chmod 700 "$SSH_CLIPBOARD_DIR"
 
@@ -90,12 +94,17 @@ function sshc {
 	echo "-- ssh with clipboard server"
 
 	command ssh \
-		-o StreamLocalBindUnlink=yes \
-		-o ExitOnForwardFailure=yes \
 		-R "$SSH_CLIPBOARD_REMOTE_SOCKET:$SSH_CLIPBOARD_SOCKET" \
 		"$@"
 }
 
+cleanup_ssh_clipboard() {
+	[ -n "${SSH_CONNECTION:-}" ] || return
+	[ -S "$SSH_CLIPBOARD_REMOTE_SOCKET" ] || return
+	rm -f -- "$SSH_CLIPBOARD_REMOTE_SOCKET"
+}
+
 if init_clipboard_server; then
 	alias ssh='sshc'
+	trap cleanup_ssh_clipboard EXIT HUP TERM
 fi