X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/3feef411b5486ffdb5384387db94ea3664117933..5c1771876cc5301c2d0c7e9e28c69a01682d2429:/bin/start-ssh-agent diff --git a/bin/start-ssh-agent b/bin/start-ssh-agent index bfb2608..88fd657 100755 --- a/bin/start-ssh-agent +++ b/bin/start-ssh-agent @@ -29,6 +29,12 @@ case $chosen,$style in ;; esac +## Check that this stands a chance of working. +if ! type >/dev/null 2>&1 ssh-agent || ! type >/dev/null >&1 ssh-add; then + echo >&2 "$0: ssh not installed; chickening out" + exit 1 +fi + ## Some useful variables. hostname=${HOST-$(hostname)} user=${USER-${LOGNAME-$(id -un)}} uid=${UID-$(id -u)} @@ -68,13 +74,20 @@ case $foundp in nil) mkdir -p -m700 "$dir" SSH_AUTH_SOCK=$socket + p=$PATH + runes= + while :; do + case $p in *:*) d=${p%%:*} p=${p#*:} ;; *) d=$p p= ;; esac + if [ -x "${d+$d/}setsid" ]; then runes="$runes setsid"; break; fi + case $p in "") break ;; esac + done set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e if [ $rc -ge 2 ]; then if [ -f "$pid" ]; then kill $(cat "$pid") >/dev/null 2>&1 || : fi rm -f "$socket" "$pid" - (cd /; exec ssh-agent -d -a "$socket" >/dev/null 2>&1)& + (cd /; exec $runes ssh-agent -d -a "$socket" /dev/null 2>&1)& echo $! >"$pid" SSH_AUTH_SOCK=$socket fi