Почему моя оболочка по умолчанию из /etc/passwd не запускается терминалами в сеансе Unity?
Я пытаюсь установить рыбу в качестве оболочки по умолчанию. Он устанавливается в системе через apt-get и указан в /etc/shells
:
> which fish
/usr/bin/fish
> grep fish /etc/shells
/usr/bin/fish
я использовал chsh
перейти с Баша на рыбу:
> chsh -s /usr/bin/fish
И моя оболочка по умолчанию была изменена в /etc/passwd
:
> grep "myusername" /etc/passwd
myusername:x:1000:1000:Oh Spite,,,:/home/myusername:/usr/bin/fish
Потрясающие. Затем я вышел из системы и перезагрузился. Оболочки для входа (например, виртуальные TTY и SSH) теперь запускают fish.
И все же, когда я запускаю терминал с помощью gnome-terminal или urxvt, начинается сеанс bash. Кроме того, SHELL
переменная по-прежнему установлена в /bin/bash
,
Интересно, что Терминатор использует рыбу в качестве оболочки по умолчанию. Но даже в этой сессии SHELL
установлен в /bin/bash
, Если я запускаю urxvt из Terminator, urxvt начинает сеанс Bash.
Что еще мне нужно сделать, чтобы сменить оболочку по умолчанию на fish?
(См. Также этот вопрос, но это не дубликат, потому что я следовал этим инструкциям и перезагружался. Много раз сейчас.)
2 ответа
Большинство терминалов (по крайней мере, например, gnome-terminal, urxvt и XTerm), которые запускаются в среде рабочего стола, такой как Unity, будут использовать SHELL
Переменная окружения для выбора оболочки при запуске.
SHELL
должен автоматически быть установлен в оболочку по умолчанию, указанную в /etc/passwd
, но переменная может быть перезаписана при входе в систему. Убедитесь, что вы не установили SHELL=/bin/bash
или что-то подобное в файле, который повлияет на весь сеанс рабочего стола. Такие файлы включают в себя:
~/.profile
~/.pam_environment
/etc/environment
- может быть, некоторые другие файлы, редактируемые пользователями Ubuntu реже, такие как
/etc/profile
Дополнительно, если какие-либо сценарии, такие как ~/.bashrc
или же ~/.bash_profile
вызываются этими другими файлами запуска и есть export SHELL=/bin/bash
линия, которая также повлияет на весь сеанс рабочего стола.
Я знаю, что это приемлемо / поощряется, но я все еще ненавижу отвечать на свой вопрос. Тем не менее, это может быть полезным для кого-то в будущем. Спасибо @heemayl и @muru за помощь в расследовании.
Установить fish
в качестве оболочки по умолчанию для gnome-terminal
, от gnome-terminal
идти к:
Edit > Profile Preferences
затем перейдите к Title and Command
На вкладке вы получите:
Измените это как:
Теперь, когда вы начинаете новый экземпляр gnome-terminal
, fish
будет запущен вместо bash
,