Пользовательская команда Gnome-терминала и динамический рабочий каталог

Есть несколько мест, где вы могли бы использовать скрипт помимо ~/.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 либо не установлена, либо пуста (см. исходный код для проверки).

3
13.04.2017, 15:36
3 ответа

Как упоминал Жиль в комментарии, установка переменной SHELL также работает. У него нет обратной стороны моего другого ответа. Вот подробности:

  1. Создайте .xsessionrc в вашем домашнем каталоге с содержимым:

     SHELL = / usr / bin / fish 
     
  2. Отключить пользовательскую команду в gnome-terminal параметры профиля.

  3. Выйти и снова войти.

Gnome-terminal должен уважать переменную и использовать эту настраиваемую команду. Это работает для меня в Ubuntu 16.04.1 и решает проблему с рабочим каталогом.

2
27.01.2020, 21:26

Одним из способов решения этой проблемы было бы добавить следующее в .bashrc :

if [ -f /usr/bin/fish ]; then
    exec /usr/bin/fish
fi

Обратная сторона: как пользователю рыбы, вам иногда нужно POSIX-совместимая оболочка. Если вы выполните bash , взломанный выше метод даст вам вместо этого еще одну рыбную раковину.

0
27.01.2020, 21:26

Для тех, кто использует сеанс Wayland, этот обходной путь , основанный на установке переменной SHELL, не будет работать, поскольку Wayland не использует файлы оболочки, включая.xsessionc,.profile или.bashrc.

Один из вариантов обходного пути, который сработал для меня, заключался в создании пользовательской программы запуска для терминала GNOME, которая устанавливала переменную среды SHELL с помощью env:

env SHELL=/usr/bin/fish gnome-terminal
1
27.01.2020, 21:26

Теги

Похожие вопросы