Ваше sudo
определение неверно. Вы разрешили networkmenu
работать с sudo
, но на самом деле вы используете networkmenu
вместо sudo networkmenu
, так что никаких дополнительных привилегий для запуска не дается. (Простое добавление записи в файл sudoers
не дает этому приложению никаких дополнительных привилегий; скорее, это позволяет команде sudo
предоставлять определенные привилегии для указанного приложения.)
Единственное место, где вы используете sudo
в вашем скрипте, это для sudo wpa_cli...
, поэтому либо вам нужно запустить весь скрипт под sudo
, либо вам нужно разрешить wpa_cli
вызываться из sudo
.
Вариант 1 :Разрешить выполнение всего сценария с привилегиями root
sudo
PATH
в начале вашего скрипта, потому что он будет работать от имени пользователя root sudo
из вашего скрипта sudo networkmenu
, а не просто как networkmenu
Вариант 2 :Разрешить запуск сценария от имени непривилегированного пользователя, но разрешить повышение прав для команды wpa_cli
:
Измените запись sudo
speklap ALL=(ALL) NOPASSWD: /sbin/wpa_cli *
Явно установите PATH
в верхней части вашего скрипта, потому что wpa_cli
находится в каталоге, который часто не указывается в пользовательских настройках PATH
(/sbin
)
Этот ответ предполагает, что вы используетеzsh
(т. е. , вероятно, работает с Catalina или Big Sur ). Подход для bash
аналогичен, но я не буду его здесь описывать.
Ваше странное приглашение могло быть установлено либо из командной строки, либо в одном из ваших zshrc
файлов(/etc/zshrc
или~/.zshrc
).
Сначала попробуйте:
PS1="%n@%m %1~ %# "
Это должно немедленно изменить подсказку. Если нет, то сделайте так:
precmd_functions=""
PS1="%n@%m %1~ %# "
Теперь вам нужно убедиться, что вы не изменили /etc/zshrc
или ~/.zshrc
. Вы можете проверить это,source
просмотрев файлы:
. /etc/zshrc
. ~/.zshrc
Подсказка не должна была измениться. Если это так, и он изменился после . /etc/zshrc
, вы изменили файл /etc/zshrc
, и вам следует восстановить или исправить его:
Откройте /etc/zshrc
в своем редакторе, найдите текущее объявление для PS1
и отредактируйте его, заменив существующее объявление PS1
этим :
# Default prompt
PS1="%n@%m %1~ %# "
Если подсказка изменилась после . ~/.zshrc
, значит, она была изменена, и ее следует восстановить или исправить. Здесь у вас есть выбор:
Если вас устраивает приглашение по умолчанию, вы можете просто удалить запись для PS1
в ~/.zshrc
.
Конечно, вам не нужно использовать подсказку по умолчанию -, это всего лишь подсказка, которую Apple выбрала в своей бесконечной мудрости. Если вы хотите, чтобы приглашение , отличное от по умолчанию (, повторялось ), вы должны изменить значение PS1
здесь -в ~/.zshrc
.