Почему мгновенные пакеты исчезают при использовании оболочки Fish?

Если я беру чистую установку Ubuntu 17.10, устанавливаю пакет с помощью оснастки и меняю оболочку на fish, после повторного входа в систему пакет отсутствует в меню gnome-shell и в моем списке избранного.

Как ни странно, это также происходит только при использовании Wayland.

Что может вызвать эту проблему? Я могу подтвердить, что моя оболочка работает нормально и путь нормальный. Я также могу подтвердить, что эти приложения работают нормально через мгновенный запуск или их версии командной строки, но это как если бы файлы * .desktop отсутствовали.

2
задан 28 December 2017 в 04:11

3 ответа

Создайте ~/.config/fish/config.fish, если он не существует, и добавьте следующие две строки.

set PATH /var/lib/snapd/snap/bin $PATH
set XDG_DATA_DIRS /var/lib/snapd/desktop/:$XDG_DATA_DIRS

Это поместит приложения snap на ваш путь и сделает доступными ярлыки.

7
ответ дан 25 December 2019 в 13:00
  1. Проблема: проблема связана с вашей оболочкой входа в систему.

Переменная XDG_DATA_DIRS устанавливается при получении /etc/profile.d (/etc/profile.d/apps-bin-path.sh)

Но если вы используете fishshell , как в вашем случае, или zsh, вы не используете /etc/profile.d/, и поэтому XDG_DATA_DIRS никогда не устанавливается, а файлы .desktop в / var / lib / snapd / desktop не будут найдены. Это не ошибка, но это связано с тем, что рыба не совместима с POSIX 1003.1. Это означает, что эти оболочки не понимают синтаксис bash.

  1. Обходной путь: я могу подумать, по крайней мере, два обходных пути.

    I.- Самый простой способ - изменить оболочку по умолчанию на bash с помощью

    chsh -s / bin / bash

И затем добавить строка

fish 

В конце ~ / .bashrc. При этом ваша оболочка входа будет bash, а ваш /etc/profile.d будет получен, но вы будете использовать fish каждый раз, когда открываете свой терминал. А написание 'exit' на вашем терминале приведет к переходу на bash.

II.- Самое сложное - это сохранить рыбу в качестве оболочки для входа в систему, но заставить /etc/profile.d быть полученным. Для этого вам нужно выполнить следующие шаги:

a.- от вашей рыбной раковины установите fisher и bass (утилиты Bash можно использовать в Fish shell).

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher 

# instruct fisher to download the bass package   
fisher add edc/bass 

b.- отредактируйте ваш ~ / .config / fish / config.fish (создайте его, если он не существует) и создайте исходный файл для каждого файла в /etc/profile.d, используя бас.

nano ~/.config/fish/config.fish (hate me, I use nano for simple things) 

(я другой терминал использую каталог /etc/profile.d для получения списка файлов. Скопируйте их)

Вставьте список в свой нано-терминал следующим образом:

bass source /etc/profile.d/apps-bin-path.sh 

bass source /etc/profile.d/cedilla-portuguese.sh 

bass source /etc/profile.d/vte-2.91.sh 

bass source /etc/profile.d/bash_completion.sh 

bass source /etc/profile.d/input-method-config.sh 

bass source /etc/profile.d/xdg_dirs_desktop_session.sh 

Сохранить, закрыть, закрыть сеанс или перезапустить и «та-да».

С помощью этой опции вы сохраняете fish в качестве оболочки для входа, но вы должны время от времени проверять каталог /etc/profile.d, чтобы убедиться, что нет нового файла, который вы не нашли. [+1121]

1
ответ дан 28 December 2017 в 04:11

В дополнение к тому, что предлагается в ответе Эстебана Вергары , я добавил эти строки в свой файл ~/.config/fish/config.fish:

for file in /etc/profile.d/*.sh
        bass source $file
end

Это предотвратит проблему проверки вашего profile.d регулярно, как он предложил, так как он будет рекурсивно загружать все файлы sh в этой папке при запуске сеанса.

2
ответ дан 3 September 2020 в 18:52

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

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