问题陈述:测试Cygwinmintty
bash
会话是否为“以管理员身份运行”的最优雅,最可靠的方法是什么?
为什么要这样?mintty
使用Windows时,我通常会打开几个终端(mintty
没有选项卡)。最尴尬的是,当我需要找到一个通过右键单击“以管理员身份运行”而启动的终端窗口时,例如,当我想运行ping
或执行其他一次性过程时。我想直观地指出终端会话的“以管理员身份运行”(通过更改启动文件中的bash
shell提示变量)。PS1
~/.bashrc
一些快速的潜在解决方案:
env
输出,可以发现很多差异。但是,就可移植性到另一台Windows机器(也许正在运行不同版本的Windows)而言,很难确定哪个最可靠。id
,更具体地说,id -Gn
如果以管理员身份运行,则显示不同的组。在我的Windows 7计算机中,我Administrators
和root
组已添加到列表中。同样,我不确定这是否可移植。id(1)
命令的用途类似(但本机存在于Windows-或Cygwin中,但没有将Windows系统概念转换为POSIX仿真概念)。还有更好或更优雅的建议吗?也许cygwin提供了专用于此目的的命令实用程序?
更新: 97%重复https://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights/-区别只是在这里使用bash
而不是(恕我直言,怪异而古怪的)Windows cmd.exe
。请在此处检查答案和评论。
出于相同的原因,我只是编写了此函数。我不知道哪个外壳程序具有管理员权限。
function isadmin()
{
net session > /dev/null 2>&1
if [ $? -eq 0 ]; then echo "admin"
else echo "user"; fi
}
它针对Windows cmd shell从此答案https://stackoverflow.com/a/11995662/307968改编而来。如果您是管理员,则网络会话将返回0状态。
现在,我只需要更改提示或标题栏颜色即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句