msys 中的 sudo 相当于什么?

问题描述 投票:0回答:3

我正在编写一个跨平台 shell 脚本,应该可以在 Unix、Cygwin 和 msys 上运行。在我的 shell 脚本中,我需要使用提升的权限执行操作。在 Unix 上,您可以通过

sudo
来完成此操作,在 Cygwin 上,可以通过
cygstart --action=runas
之类的东西来完成此操作。 msys 相当于什么?

到目前为止我所有的谷歌搜索都只出现了this,这对于 shell 脚本来说是不切实际的,因为你必须与 GUI 交互。

windows bash command-line msysgit msys
3个回答
2
投票

Elevate 在这方面做得不错,尽管它并不完全

sudo
等效。


1
投票

我想我可能已经找到了使用 PowerShell 的解决方案:

escape()
{
    RESULT="$1"
    RESULT="${RESULT/\'/\\\'\'}" # replace ' with \''
    RESULT="${RESULT/\"/\\\\\\\"}" # replace " with \\\"
    echo "''$RESULT''" # PowerShell uses '' to escape '
}

sudo()
{
    ESCAPED=()
    for ARG in "$@"
    do
        ESCAPED+=($(escape "$ARG"))
    done

    SHELL_PATH=$(cygpath -w $SHELL)
    PS_COMMAND="[Console]::In.ReadToEnd() | Start-Process '$SHELL_PATH' '-c -- \"${ESCAPED[*]}\"' -Verb RunAs"
    cat /dev/stdin | powershell -NoProfile -ExecutionPolicy Bypass "$PS_COMMAND"
}

确实有点非常hackish,但总比没有好。 (或批处理文件,就此而言。)


0
投票

您可能想看看该项目自己的解决方案: https://www.msys2.org/wiki/Sudo/

© www.soinside.com 2019 - 2024. All rights reserved.