Постановка проблемы: Какой самый элегантный и надежный способ проверить, является ли сеанс Cygwin mintty
bash
"Запуск от имени администратора"?
Почему конкретно? У меня обычно несколько терминалов mintty
открываются при использовании Windows (у mintty
нет вкладок). Самое неловкое, когда мне нужно найти окно терминала, которое я открыл, щелкнув правой кнопкой мыши "Запуск от имени администратора", когда, например, я хочу запустить ping
или другую одноразовую процедуру. Я хотел бы визуально указать "запуск от имени администратора" сеанса терминала (изменив переменную приглашения оболочки оболочки bash
PS1
в моем файле запуска ~/.bashrc
).
Некоторые быстрые потенциальные решения:
- Я могу сравнить значение некоторых переменных среды. При быстром взгляде на вывод
env
довольно много различий. Однако трудно сказать, какой из них является наиболее надежным с точки зрения переносимости на другую машину Windows (возможно, под управлением другой версии Windows). id
, а точнееid -Gn
показывает разные группы, если они запускаются от имени администратора. На моем компьютере с Windows 7 в список добавленыAdministrators
иroot
группы. Опять же, я не уверен, что это портативный.- Я мог бы попытаться записать файл в папку, которая не сработала бы как обычный пользователь. Но я не хочу записывать какие-либо файлы в незнакомые места - в некоторых воображаемых сценариях это может быть потенциально разрушительным (например, выход из строя носителя), и это кажется мне совершенно неуместным.
- Запуск некоторой программы Windows, которая сообщит статусом возврата или выводом, если команда запускается "как администратор". Лучше всего подойдут те, которые аналогичны назначению команды UNIX
id(1)
(но изначально существуют в Windows или Cygwin, но без слишком надуманного перевода системных понятий Windows в эмулируемые POSIX-концепции).
Есть лучшие или более элегантные предложения? Возможно, cygwin предоставляет командную утилиту, предназначенную для этой цели?
Обновление: 97% дубликатов https://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights/ - разница только в том, что здесь используется bash
вместо (IMHO странно и архаично) Windows cmd.exe
. Пожалуйста, проверьте ответы и комментарии там.