Терминал Mac содержит «pbpaste» в каждой строке

Ваше 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)

0
28.10.2020, 21:53
1 ответ

Этот ответ предполагает, что вы используете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, значит, она была изменена, и ее следует восстановить или исправить. Здесь у вас есть выбор:

  1. Если вас устраивает приглашение по умолчанию, вы можете просто удалить запись для PS1в ~/.zshrc.

  2. Конечно, вам не нужно использовать подсказку по умолчанию -, это всего лишь подсказка, которую Apple выбрала в своей бесконечной мудрости. Если вы хотите, чтобы приглашение , отличное от по умолчанию (, повторялось ), вы должны изменить значение PS1здесь -в ~/.zshrc.

0
18.03.2021, 22:54

Теги

Похожие вопросы