Я написал эти два сценария, и они находятся в моем $PATH
:
гсудо:
#! /bin/bash
sudo -n true &> /dev/null
if [ $? -eq 0 ]
then
sudo "$@"
else
upass=$(zenity --password --title "Enter your password" 2> /dev/null)
[[ ! -z "$upass" ]] && echo $upass | sudo -S -p "" "$@"
fi
Этот скрипт по сути делает то же самое, что и gksu
. Он смотрит, нужен ли sudo
пароль или нет, и в результате этого он будет спрашивать пароль или нет.
запустить-то
gsudo command1
gsudo command2
Если я запускаю второй скрипт из окна терминала, я получаю ожидаемое поведение. Он просто запрашивает мой пароль только один раз. Но если я вызываю его из графического окружения, например, из-за выполнения задач (я пробовал i3wm dmenu и rofi launcher), он запрашивает мой пароль два раза. Так почему же это происходит, как я могу это исправить? Я полагаю, что sudo -n true
должен возвращать одну и ту же вещь оба раза, потому что она вызывается в одном и том же скрипте, поэтому сеанс sudo
должен сохраняться. Я не пытаюсь сохранить сеанс sudo
между различными вызовами скрипта, достаточно, чтобы он сохранялся только в одном вызове.