В Ubuntu 18.04 я изменил свою оболочку на fish с помощью
chsh -s `which fish`
Я установил приложения моментальных снимков Maillspring и Visual Studio Code, они установились нормально и могли быть изначально запущены из панели инструментов, но после входя в систему и выходя из нее, никто из них больше не появлялся в тире.
Поиск их в магазине ПО показывает, что они установлены, и я могу запустить их оттуда.
Почему для этого будет иметь значение оболочка по умолчанию?
Команда Вы имели первоначально в Вашем вопросе chsh -s which bash
был, как Вы говорите, что опечатка, которая вызвала много беспорядка вокруг Вашего вопроса. Даже если это было правильно сформировано с 'символами вокруг который удар как показано ниже.
это изменило бы оболочку на bash
(значение по умолчанию). Изменить оболочку на fish
использовать
или просто используйте команду chsh
и введите путь к оболочке, которую Вы хотите использовать. Посмотрите ниже:
me@zippy-64bit:~$ chsh
Password:
Changing the login shell for me
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
Для получения дополнительной информации о рыбе оболочка посмотрите это.
Править: Относительно поспешных пакетов: значение по умолчанию окружит вопрос? ответ возможно, поскольку он зависит от предположений, сделанных и подход, проявленный программистом. Обратитесь к различиям в том, как удар и как рыбы обрабатывают вещи в предыдущей ссылке. Например, у рыбы нет неявной подоболочки, которая может вызвать удивительные побочные эффекты в переменном присвоении для программиста, который ожидает поведение, подобное удару. Существует хороший пример ожидания неявной подоболочки в вопросе здесь.
Почему? В попытке разъясниться кажется, что понятие наследования обрабатывается по-другому между рыбой и другими более общими оболочками как удар. Мое понимание - то, что это может привести к неожиданному поведению от каналов, циклов и функций (Все из которых являются наиболее часто используемыми стратегиями программирования).
Программист может также полагаться на оболочку builtins, который или не может существовать у рыбы или может быть реализован неожиданным способом.
Источники:
Снимки, которые Вы установили, могут быть найдены в/snap/bin/, у Вас должен быть тот каталог в Вашем $PATH.
Ubuntu автоматически добавляет/snap/bin к Вашему $PATH. Это происходит в/etc/profile.d/apps-bin-path.sh, который работает, когда Вы получаете оболочку входа в систему.
Я проверил, и fish
также добавляет /snap/bin
в $PATH поэтому обычно это должно быть прекрасным.
Можно ли показать нам вывод команды
echo $PATH
Если вывод имеет /snap/bin
, затем поздравления, Вы нашли ошибку в Ubuntu и можно зарегистрировать отчет о Панели запуска для нее.
дополнение: Ubuntu внутренне, вероятно, использует $SHELL для некоторых сценариев. fish
оболочка не на 100% совместима с bash
и похоже, что это - причина проблемы. Это - распространенная проблема при изменении оболочки входа в систему на что-то другое, чем bash
. См., например, этот отчет https://youtrack.jetbrains.com/issue/CPP-2919 с пользователями, изменяющими их оболочку на /bin/tcsh
.
Необходимо зарегистрировать отчет об ошибках Ubuntu так, чтобы кто-то исследовал и исправил внутренние сценарии для работы с fish
. Если Вы действительно любите fish
, это - то, что необходимо сделать.;-)
Та же проблема здесь (Ubuntu 18.10): после chsh -s `which fish`
, Gnome Shell больше не находит snapp приложения, даже после добавления /snap/bin
к $PATH
.
Мое обходное решение:
fish
.После этого стартовый Терминал Gnome (или от Gnome Shell или с Ctrl+Alt+T) запустит оболочку Рыбы, но системная оболочка все еще будет Bash, таким образом, ничто не повредится.
Однако это означает, что другие приложения, порождающие стоящую с пользователем оболочку (Код Visual Studio, например), могут потребовать, чтобы настройка также использовала Рыбу вместо Bash.
Существует TL; DR внизу.
Чтобы оболочка гнома смогла запустить Снимки, требуется две вещи (оценивает, в скобках находятся на моем рабочем столе Fedora 29, который имеет ту же проблему):
/var/lib/snapd/snap/bin
)/var/lib/snapd/desktop
)Эти переменные настроены в /etc/profile.d/snapd.sh
через /etc/profile
стандартный запуск удара.
Когда Вы переключаетесь для рыбалки к целому /etc/profile
запуск пропускается.
Так как большинство дистрибутивов принимает использование удара и устанавливает сценарии конфигурации в /etc/profile.d
, просто chsh -s /bin/fish
не будет использовать их. Снимки, не находимые оболочкой гнома, являются одним таким признаком.
Лучшее решение, которое я имею до сих пор, состоит в том, чтобы использовать рыбу только интерактивная оболочка и удар отпуска на месте, чтобы сделать другое обслуживание.
Оставьте пользовательскую оболочку значения по умолчанию как удар:
chsh -s /bin/bash
В ~/.bashrc
имейте следующее:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
if [ -z "$BASH_EXECUTION_STRING" ]; then
exec /bin/fish
fi
Для bash --login
случай (как вызвано через X11/Wayland) удаляет ~/.profile
и добавьте .bash_profile
(заставьте его колотить конкретный):
# we want to run fish most of the time, but this is invoked by bash --login
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
добавьте это в свой файл ~/.config/fish/config.fish
for file in /etc/profile.d/*.sh
bass source $file
end
установите бас с помощью fisher:
fisher add edc/bass
или установите бас с помощью omf:
omf install bass
перезагрузите сеанс и все теперь должно работать :)