сбросить $ SHELL до значения по умолчанию

Я прочитал ответы на эти вопросы ( это && это ), ни один из них не работает для меня!

% uname --operating-system --kernel-name --kernel-version --kernel-release Linux 4.9.6-200.fc25.x86_64 #1 SMP Thu Jan 26 10:17:45 UTC 2017 GNU/Linux 

Я загружаю / устанавливаю st terminal ( простой терминал ), и я хотел бы установить его как мой главный эмулятор терминала, но я сделал огромную ошибку , которая запускает эту команду как root: % su -c 'chsh -s /usr/local/bin/st' .

Теперь, всякий раз, когда я хочу войти / запустить команду с правами администратора, Can't open display сообщение: Can't open display . Я попробовал следующие команды (как показано ниже), но не работает.

 % env -i bash % su Password: Can't open display % su -c 'env -i bash' Password: Can't open display % su -c 'chsh -s /usr/bin/bash' Password: Can't open display % su -s bash Password: su: using restricted shell /usr/local/bin/st Can't open display % su Password: Couldn't read from shell: Input/output error child finished with error '256' % 

ОБНОВЛЕНИЕ: Я попытался сделать так, как объяснено в предлагаемом ответе

  1. В приглашении загрузчика перейдите к обычной записи, с которой вы загружаетесь.
  2. Вместо нажатия Enter нажмите e, чтобы сначала отредактировать параметры командной строки ядра
  3. В открывшемся редакторе используйте клавиши со стрелками, чтобы найти строку, начинающуюся с linux, идите к ее концу и добавьте к ней init = / bin / sh. Это временно заменит вашу систему инициализации оболочкой вашей системы, и поскольку init запускается root, это будет корневая оболочка.
  4. Нажмите CTRL + X, чтобы загрузить измененную запись.
  5. снова запустить chsh с правильными параметрами

Но когда я сделал шаг 4, я столкнулся с этим экраном!

Я сделал огромную ошибку

Вы действительно. Способ восстановления из этого заключается в том, чтобы найти способ запуска команды в качестве суперпользователя, но без использования настраиваемой оболочки входа суперпользователя.

Режимы спасения и экстренной помощи не достигнут этого, если вам не посчастливилось иметь /usr на отдельном диске, – иронически противоположность тенденции последних 30 лет. Если том диска, содержащий /usr/local/bin/st , не является корневым, файл не будет исполняться. В такой ситуации аварийный логин с подобными sulogin или emergency-login будет пытаться вернуться к жесткому названию оболочки.

Другим способом достижения этого является опция -s для sudo , которая запускает оболочку, заданную переменной окружения SHELL как интерактивную оболочку, а не оболочку, указанную в базе данных учетной записи пользователя для суперпользователя. (Контрастируйте опцию -i .)

doas -s аналогичным образом использует оболочку, указанную переменной окружения SHELL .

Некоторые команды операционной системы su также могут это сделать, с опцией --shell . Однако это не универсально. Кроме того, он игнорируется, как вы столкнулись, если оболочка суперпользователя в базе данных учетной записи не находится в списке разрешенных оболочек ( /etc/shells ).