Постановка проблемы: Какой самый элегантный и надежный способ проверить, является ли mintty
bash
сеанс Cygwin «Запуск от имени администратора»?
Почему конкретно? У меня обычно несколько 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% дубликатов /programming/4051883/batch-script-how-to-check-for-admin-rights/ - разница только в том, bash
чтобы использовать вместо (имхо странно и архаично) Windows cmd.exe
, Пожалуйста, проверьте ответы и комментарии там.
mintty
: 1. работает как администратор, 2. использует другой файл конфигурации с другим цветом настройки и 3. использует альтернативный значок. Если вы опишете широкой публике, как это создать, я дам вам голос (если вы не скажете в своем ответе, что это не может быть сделано в сценарии :-).
Foo
группы пользователей, если хотите.
sudo
что требуется, даже если вы работаете как пользователь root.