diff --git a/kiss b/kiss index c335a9b..3b474f5 100755 --- a/kiss +++ b/kiss @@ -49,16 +49,23 @@ prompt() { } as_root() { + # Simple function to run a command as root using either 'sudo', + # 'doas' or 'su'. This also handles KISS' environment variables. [ "$(id -u)" = 0 ] || { log "Using '${su:-su}'" + # doas requires these environment variables to be set as they + # aren't brought over from the calling user. + env="HOME='$HOME' KISS_FORCE='$KISS_FORCE' KISS_PATH='$KISS_PATH'" + case $su in *sudo) sudo -E sh -c "$*" ;; - *doas) doas -- sh -c "HOME='$HOME' KISS_PATH='$KISS_PATH' $*" ;; + *doas) doas -- sh -c "$env $*" ;; *) su -pc "$* <&3" 3<&0