Declaração do problema: Qual é a maneira mais elegante e robusta de testar se a mintty
bash
sessão do Cygwin é "Executar como administrador"?
Por que, especificamente? Normalmente, tenho vários mintty
terminais abertos ao usar o Windows ( mintty
não possui guias). O mais estranho é quando preciso encontrar uma janela de terminal iniciada clicando com o botão direito do mouse em "Executar como administrador" quando, por exemplo, quero executar ping
ou outro procedimento único. Gostaria de indicar visualmente a condição "executar como administrador" da sessão do terminal (alterando a bash
variável de prompt do shell PS1
no meu arquivo de inicialização ~/.bashrc
).
Algumas soluções potenciais rápidas:
- Eu posso comparar o valor de algumas variáveis ambientais. Pela rápida olhada na
env
saída, existem muitas diferenças. No entanto, é difícil dizer qual é o mais confiável em termos de portabilidade para outra máquina Windows (talvez executando uma versão diferente do Windows). id
,id -Gn
mostra mais especificamente grupos diferentes se executado como administrador. Na minha máquina com Windows 7, tenhoAdministrators
eroot
grupos foram adicionados à lista. Mais uma vez, não tenho certeza se isso é portátil.- Eu poderia tentar gravar um arquivo em um local que falharia como usuário normal. Mas não quero gravar nenhum arquivo em lugares estranhos - isso em alguns cenários imaginados pode ser potencialmente destrutivo (por exemplo, falha na mídia de armazenamento) e isso parece totalmente deselegante para o meu gosto.
- Executando algum programa do Windows que indicará por status de retorno ou saída, se o comando for executado "como administrador". O melhor seria alguns com finalidade análoga à do
id(1)
comando UNIX (mas que existe originalmente no Windows - ou Cygwin, mas sem tradução muito buscada dos conceitos de sistema Windows para conceitos emulados POSIX).
Alguma sugestão melhor ou mais elegante? Talvez o cygwin forneça um utilitário de comando dedicado para esse fim?
Atualização: 97% duplicado do /programming/4051883/batch-script-how-to-check-for-admin-rights/ - a diferença está aqui, em bash
vez de usar o Windows (IMHO estranho e arcaico) cmd.exe
. Por favor, verifique as respostas e comentários lá.
mintty
que 1. seja executado como administrador, 2. use arquivo de configuração diferente com cores diferentes configurações e 3. usa um ícone alternativo. Se você descrever ao público em geral como criar isso, eu darei um voto positivo (a menos que você diga na sua resposta que isso não pode ser feito dentro de um script :-).
Foo
grupo de usuários, se desejar.
sudo
necessário, mesmo se você estiver executando como usuário root.