Я пытаюсь запустить скрипт Linux на своей машине Windows с помощью Cygwin.
Я уже прочитал и попробовал решения изВ Cygwin нет команды 'sudo', но безуспешно.
У меня есть скрипт, который использует sudo в обычной среде Linux. Но когда я запускаю скрипт на Cygwin, он выдает следующее сообщение об ошибке:
project_common.sh: line 604: sudo: command not found
Я знаю, что в Cygwin нет sudo, и в упомянутом ранее вопросе говорилось, что нужно использовать:
>#!/usr/bin/bash
>"$@"
Я пробовал выполнить эту команду перед запуском скрипта. а также встроить команду в скрипт. Ни то, ни другое не помогло. Так что не уверен, что я упускаю.
решение1
Удалите все sudo
символы «» в файле и запустите скрипт от имени администратора.
При этом идея Linux root
и идея Windows об Администраторе не совсем совпадают. У вас все еще могут быть проблемы с разрешениями, которые нужно исправить вручную или путем дальнейшей модификации скрипта, особенно в Windows Vista/7.
Кстати, в упомянутом вопросе вы хотели, чтобы вы поставили
>#!/usr/bin/bash
>"$@"
в файле с именем sudo
, дайте ему права на исполнение с помощью chmod
, а затем поместите его в какой-нибудь каталог в вашем $PATH
, например /sbin
. Полученный файл не будет ничего делать, кроме как выполнять параметры, которые вы ему зададите в качестве команды. Идея была в том, чтобы создать «поддельный» sudo, который ничего не делает. Вы также можете просто удалить ' sudo
из файла.
решение2
Попробуй это:
#!/usr/bin/env bash
cygstart --action=runas "$@"
Он работает аналогично sudo, недостаток в том, что вам нужно вручную подтвердить диалог UAC. Этот скрипт является частью моеготочка репо.
решение3
Есть и другие ответы наПереполнение стекаиСуперпользователькоторый показывает, как выполнить команду с повышенными привилегиями из командной строки Cygwin. Я использую псевдоним:
alias sudo="cygstart --action=runas"
Работает как талисман для внешних программ (но не встроенных в оболочку):
sudo chown User:Group <file>