什么是msdo中的sudo相当于?

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

到目前为止,我所有的谷歌search都只是反过来,这是从一个shell脚本不可行的,因为你必须与GUI交互。

Solutions Collecting From Web of "什么是msdo中的sudo相当于?"

Elevate在这方面做了一个体面的工作,尽管它不完全是等同的。

我想我可能已经找到了使用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" } 

肯定有点极端的黑客,但总比没有好。 (或批处理文件,为此。)