Абсолютно тривиальный, но эффективный способ решить заданный вопрос - это просто удалить ~/.ecryptfs/wrapped-passphrase (или переименовать его).
Это полностью предотвратит загрузку любых ключей ключом в keyring pam_ecryptfs.
Проблема заключается в том, что сценарий зависит от настраиваемой переменной среды TERM. Ubuntu Unity Desktop не имеет этой инициализации при вызове сценариев. Если вы открываете терминал с помощью Ctrl + Alt + T, эта переменная настраивается.
Чтобы протестировать вашу систему, создайте небольшой скрипт под названием test-term.sh и сделайте так:
#!/bin/bash
#See if $TERM has been set when called from Desktop shortcut
echo TERM environment variable: $TERM > ~/Downloads/test-term.txt
echo "Using env | grep TERM output below:" >> ~/Downloads/test-term.txt
env | grep TERM >> ~/Downloads/test-term.txt
exit 0
5] Создайте ссылку в Nautilus на test-term.sh и запустите ссылку. Затем проверьте выходной файл: $ cat ~/Downloads/test-term.txt
TERM environment variable: dumb
Using env | grep TERM output below:
(... blank line appears here ...)
Как вы видите, переменная среды TERM пуста, когда используется команда env | grep TERM. Также переменная $TERM установлена на dumb, которая не очень хорошо подходит для поддерживаемой цветом команды dialog.
Кратковременное решение заключалось в том, чтобы включить шаблонный код в начале двух рассматриваемых сценариев:
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
exit 1
fi
Проблема заключается в том, что сценарий зависит от настраиваемой переменной среды TERM. Ubuntu Unity Desktop не имеет этой инициализации при вызове сценариев. Если вы открываете терминал с помощью Ctrl + Alt + T, эта переменная настраивается.
Чтобы протестировать вашу систему, создайте небольшой скрипт под названием test-term.sh и сделайте так:
#!/bin/bash
#See if $TERM has been set when called from Desktop shortcut
echo TERM environment variable: $TERM > ~/Downloads/test-term.txt
echo "Using env | grep TERM output below:" >> ~/Downloads/test-term.txt
env | grep TERM >> ~/Downloads/test-term.txt
exit 0
Создайте ссылку в Nautilus на test-term.sh и запустите ссылку. Затем проверьте выходной файл:
$ cat ~/Downloads/test-term.txt
TERM environment variable: dumb
Using env | grep TERM output below:
(... blank line appears here ...)
Как вы видите, переменная среды TERM пуста, когда используется команда env | grep TERM. Также переменная $TERM установлена на dumb, которая не очень хорошо подходит для поддерживаемой цветом команды dialog.
Кратковременное решение заключалось в том, чтобы включить шаблонный код в начале двух рассматриваемых сценариев:
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
exit 1
fi
Проблема заключается в том, что сценарий зависит от настраиваемой переменной среды TERM. Ubuntu Unity Desktop не имеет этой инициализации при вызове сценариев. Если вы открываете терминал с помощью Ctrl + Alt + T, эта переменная настраивается.
Чтобы протестировать вашу систему, создайте небольшой скрипт под названием test-term.sh и сделайте так:
#!/bin/bash
#See if $TERM has been set when called from Desktop shortcut
echo TERM environment variable: $TERM > ~/Downloads/test-term.txt
echo "Using env | grep TERM output below:" >> ~/Downloads/test-term.txt
env | grep TERM >> ~/Downloads/test-term.txt
exit 0
Создайте ссылку в Nautilus на test-term.sh и запустите ссылку. Затем проверьте выходной файл:
$ cat ~/Downloads/test-term.txt
TERM environment variable: dumb
Using env | grep TERM output below:
(... blank line appears here ...)
Как вы видите, переменная среды TERM пуста, когда используется команда env | grep TERM. Также переменная $TERM установлена на dumb, которая не очень хорошо подходит для поддерживаемой цветом команды dialog.
Кратковременное решение заключалось в том, чтобы включить шаблонный код в начале двух рассматриваемых сценариев:
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
exit 1
fi
«Решение» - это не многократно запускать программы за пределами их требуемой среды, не проверяя их статус выхода. dialog, whiptail и т. д. предназначены для терминалов, поэтому они, конечно, требуют установки TERM. Поэтому вы должны запускать эти сценарии в терминале. То же самое произошло бы с вашим «продвинутым» zenity, yad и т. Д., Если он будет работать без дисплея X11 / Wayland.
В вашем скрипте вы проверяете вывод dialog, в то время как вывод ошибки перенаправления с помощью обычный мощность. Поэтому, когда диалог «сбой и ожоги» и печатает сообщение об ошибке, вы затем сравниваете вывод ошибки в своих условиях if! Зачем вам это делать?
«Решение» - это не многократно запускать программы за пределами их требуемой среды, не проверяя их статус выхода. dialog, whiptail и т. д. предназначены для терминалов, поэтому они, конечно, требуют установки TERM. Поэтому вы должны запускать эти сценарии в терминале. То же самое произошло бы с вашим «продвинутым» zenity, yad и т. Д., Если он будет работать без дисплея X11 / Wayland.
В вашем скрипте вы проверяете вывод dialog, в то время как вывод ошибки перенаправления с помощью обычный мощность. Поэтому, когда диалог «сбой и ожоги» и печатает сообщение об ошибке, вы затем сравниваете вывод ошибки в своих условиях if! Зачем вам это делать?
«Решение» - это не многократно запускать программы за пределами их требуемой среды, не проверяя их статус выхода. dialog, whiptail и т. д. предназначены для терминалов, поэтому они, конечно, требуют установки TERM. Поэтому вы должны запускать эти сценарии в терминале. То же самое произошло бы с вашим «продвинутым» zenity, yad и т. Д., Если он будет работать без дисплея X11 / Wayland.
В вашем скрипте вы проверяете вывод dialog, в то время как вывод ошибки перенаправления с помощью обычный мощность. Поэтому, когда диалог «сбой и ожоги» и печатает сообщение об ошибке, вы затем сравниваете вывод ошибки в своих условиях if! Зачем вам это делать?