X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/276cc45571b274349f817a5bbc078f84abb385ce..bd685982389b78a158921b7839bdeca501338d19:/support/lsh diff --git a/support/lsh b/support/lsh index 20171269..b63444e3 100755 --- a/support/lsh +++ b/support/lsh @@ -7,13 +7,12 @@ # command. user='' -prefix='' do_cd=y # Default path is user's home dir, just like ssh. while : ; do case "$1" in -l) user="$2"; shift; shift ;; - -l*) user=`echo $1 | sed 's/^-l//'`; shift ;; + -l*) user=`echo "$1" | sed 's/^-l//'`; shift ;; --no-cd) do_cd=n; shift ;; -*) shift ;; localhost) shift; break ;; @@ -22,14 +21,15 @@ while : ; do done if [ "$user" ]; then - prefix="sudo -H -u $user" + prefix='' if [ $do_cd = y ]; then - home=`perl -e "print((getpwnam("$user"))[7])"` - # Yeah, this may fail, but attempts to get sudo to cd are harder. - cd $home + home=`perl -e "print((getpwnam('$user'))[7])"` + prefix="cd '$home' &&" fi -elif [ $do_cd = y ]; then - cd + sudo -H -u "$user" sh -c "$prefix $*" +else + if [ $do_cd = y ]; then + cd || exit 1 + fi + eval "${@}" fi - -eval $prefix "${@}"