什么相当于msys中的sudo?

时间:2015-12-28 02:27:09

标签: windows bash command-line msysgit msys

我正在编写一个跨平台的shell脚本,它应该适用于Unix,Cygwin和msys。在我的shell脚本中,我需要使用提升的权限执行操作。在Unix上,您可以通过sudoCygwin通过类似cygstart --action=runas的方式执行此操作。什么是msys的等价物?

到目前为止,我所有的Google搜索仅显示this,因为您必须与GUI进行交互,因此从shell脚本开始并不实用。

2 个答案:

答案 0 :(得分:2)

Elevate在这方面做得不错,虽然它不完全sudo - 相当于。

答案 1 :(得分: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,但它总比没有好。 (或批处理文件,就此而言。)