Если я беру чистую установку Ubuntu 17.10, устанавливаю пакет с помощью оснастки и меняю оболочку на fish, после повторного входа в систему пакет отсутствует в меню gnome-shell и в моем списке избранного.
Как ни странно, это также происходит только при использовании Wayland.
Что может вызвать эту проблему? Я могу подтвердить, что моя оболочка работает нормально и путь нормальный. Я также могу подтвердить, что эти приложения работают нормально через мгновенный запуск или их версии командной строки, но это как если бы файлы * .desktop отсутствовали.
Создайте ~/.config/fish/config.fish, если он не существует, и добавьте следующие две строки.
set PATH /var/lib/snapd/snap/bin $PATH
set XDG_DATA_DIRS /var/lib/snapd/desktop/:$XDG_DATA_DIRS
Это поместит приложения snap на ваш путь и сделает доступными ярлыки.
Переменная 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.
Обходной путь: я могу подумать, по крайней мере, два обходных пути.
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]
В дополнение к тому, что предлагается в ответе Эстебана Вергары , я добавил эти строки в свой файл ~/.config/fish/config.fish
:
for file in /etc/profile.d/*.sh
bass source $file
end
Это предотвратит проблему проверки вашего profile.d
регулярно, как он предложил, так как он будет рекурсивно загружать все файлы sh в этой папке при запуске сеанса.