Ошибка: "Значение переменной SHELL не найдено в файле /etc/shells" при запуске `pkexec`
В Ubuntu 14.04 я получаю сообщение об ошибке "Значение переменной SHELL не найдено в файле / etc / shells" при запуске pkexec
запустить скрипт.
Скорее всего, эта ошибка началась после того, как я удалил оболочку fish, которая была установлена в качестве оболочки по умолчанию.
Содержание /etc/shells
является:
# / etc / shells: допустимые логины
/ Бен / ш
/ Бен / тире
/ Бен / Баш
/ Бен / rbash
Как я могу это исправить?
1 ответ
Проблема заключается в следующем: pkexec
получает доступ $SHELL
определить, какую оболочку использовать для оценки оставшейся части команды; так как вы удалили рыбу, но больше ничего не делали, $SHELL
все еще содержит /usr/bin/fish
, но pkexec
не считает /usr/bin/fish
как действительная оболочка, так как /usr/bin/fish
был удален из /etc/shells
,
Вам нужно сделать эти две вещи:
Установите новую оболочку для своего пользователя, чтобы при следующей загрузке среды
$SHELL
будет содержать путь к допустимой оболочке. Например, чтобы установить Bash в качестве новой оболочки для вашего пользователя (заменитеuser
с именем пользователя):sudo chsh -s /bin/bash user
Выйдите из системы, чтобы перезагрузить среду, чтобы
$SHELL
содержит путь к новой оболочке для вашего пользователя.