A sequence of assignments like
foo=mumble bar=$foo/twonk
in bash is expanded from left-to-right, so bar is assigned the value
mumble/twonk. Unfortunately, some shells don't process assignments
left-to-right in this way, and bar ends up as just /twonk.
Insert semicolons to force sequencing.
;;
*)
start=
- set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e
+ set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e
[ $rc -ge 2 ] && start=t
;;
esac
if [ "$start" ]; then
hostname=${HOST-$(hostname)}
user=${USER-${LOGNAME-$(whoami)}}
- dir=$TMPDIR/.ssh-agent.$hostname.$user socket=$dir/sock pid=$dir/pid
+ dir=$TMPDIR/.ssh-agent.$hostname.$user; socket=$dir/sock; pid=$dir/pid
mkdir -p -m700 "$dir"
SSH_AUTH_SOCK=$socket; export SSH_AUTH_SOCK
- set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e
+ 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 || :