Есть несколько мест, где вы могли бы использовать скрипт помимо ~/.bashrc
или /etc/profile
; без подробностей о том, какие изменения вы внесли, вы получите только общий совет. Например, вы могли
/etc/profile.d
~/.profile
или ~/.bash_profile
Вы можете найти возможные места с помощью grep, например,
$ grep -r -l dircolors /etc ~ 2>/dev/null
/etc/profile.d/colorls.csh
/etc/profile.d/colorls.sh
/etc/DIR_COLORS
/etc/DIR_COLORS.lightbgcolor
/etc/DIR_COLORS.256color
Сообщение об ошибке исходит от dircolors
(см. исходный код), которая делает это, когда ваша переменная окружения SHELL
либо не установлена, либо пуста (см. исходный код для проверки).
Как упоминал Жиль в комментарии, установка переменной SHELL также работает. У него нет обратной стороны моего другого ответа. Вот подробности:
Создайте .xsessionrc
в вашем домашнем каталоге с содержимым:
SHELL = / usr / bin / fish
Отключить пользовательскую команду в gnome-terminal параметры профиля.
Gnome-terminal должен уважать переменную и использовать эту настраиваемую команду. Это работает для меня в Ubuntu 16.04.1 и решает проблему с рабочим каталогом.
Одним из способов решения этой проблемы было бы добавить следующее в .bashrc
:
if [ -f /usr/bin/fish ]; then
exec /usr/bin/fish
fi
Обратная сторона: как пользователю рыбы, вам иногда нужно POSIX-совместимая оболочка. Если вы выполните bash
, взломанный выше метод даст вам вместо этого еще одну рыбную раковину.
Для тех, кто использует сеанс Wayland, этот обходной путь , основанный на установке переменной SHELL, не будет работать, поскольку Wayland не использует файлы оболочки, включая.xsessionc,.profile или.bashrc.
Один из вариантов обходного пути, который сработал для меня, заключался в создании пользовательской программы запуска для терминала GNOME, которая устанавливала переменную среды SHELL с помощью env:
env SHELL=/usr/bin/fish gnome-terminal