Каков канонический способ приостановки WinCMD -Style в Linux Bash?

Настройка возможностей, как описано в другом ответе, необходима, но недостаточна, по крайней мере, если вместо mySQL используется MariaDB.
В дополнение к добавлению возможностей, NoNewPrivilegesдолжно быть ложно (или нет ).
Поскольку NoNewPrivilegesподразумевается PrivateDevices, установленным в mariadb.service, мы должны изменить это значение на false.

У меня все получилось в Ubuntu 18 LTS (, где Galera не работает с поставляемым пакетом mysql )с этими настройками в/etc/systemd/system/mariadb.service.d/mariadb-sudo.conf(нет необходимости редактировать исходныйmariadb.service):
[Service] CapabilityBoundingSet=CAP_SETUID CapabilityBoundingSet=CAP_SETGID CapabilityBoundingSet=CAP_AUDIT_WRITE PrivateDevices=false

Поскольку mariadb.serviceимеет Alias=mysql.service, его можно начать с
service mysql start, так что это, кажется, соответствует исходному вопросу.

0
24.01.2021, 23:33
2 ответа
read_a_key() (
  exec </dev/tty
  t=$(stty -g)
  trap 'stty "$t"; return' EXIT INT QUIT TERM 
  stty raw -echo isig
  dd count=1 2>/dev/null
)

printf '%s ' 'Press ANY KEY to continue... '
key=$(read_a_key)
echo OK, continuing

Используйте его как read_a_key >/dev/null, если вам все равно, какую клавишу нажал пользователь.

Это также должно нормально работать с клавишами, которые превращаются в несколько символов (, например. F1), в отличие от bash read -n1, который оставляет ложные символы OPили [[Aдля следующей команды;-)

2
18.03.2021, 22:34

Я нашел комментарий пользователя epileg на сайте, предлагающий этот фрагмент кода(слегка отредактированный ), в котором утверждалось, что «есть способ аккуратно сделать это в Linux :"

#!/bin/bash
...
echo -n "Press <ENTER> to continue..."
stty -echo
dd count=1 1>/dev/null 2>&1
stty echo
echo #Produces an empty line in the end, can be removed.
...

Хотя это очевидно для некоторых пользователей, следует также упомянуть, что шебанг #!/bin/bashне решает, что использовать, если вы это сделаете. Допустим, приведенный выше скрипт назывался demo, и вы набрали sh demoили zsh demo, соответственно вызывается shили zsh, а не bash.

0
18.03.2021, 22:34

Теги

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