Ошибка: "Значение переменной 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,

Вам нужно сделать эти две вещи:

  1. Установите новую оболочку для своего пользователя, чтобы при следующей загрузке среды $SHELL будет содержать путь к допустимой оболочке. Например, чтобы установить Bash в качестве новой оболочки для вашего пользователя (замените user с именем пользователя):

    sudo chsh -s /bin/bash user
    
  2. Выйдите из системы, чтобы перезагрузить среду, чтобы $SHELL содержит путь к новой оболочке для вашего пользователя.

Другие вопросы по тегам