AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1032581
Accepted
Calin
Calin
Asked: 2018-05-06 16:29:16 +0800 CST2018-05-06 16:29:16 +0800 CST 2018-05-06 16:29:16 +0800 CST

使用鱼壳重新登录后,Snap 应用程序不显示

  • 772

在 Ubuntu 18.04 上,我通过

chsh -s `which fish`

我已经安装了 Maillspring 和 Visual Studio Code 快照应用程序,它们安装得很好,最初可以从仪表板启动,但在登录和注销后,它们都不再出现在仪表板中。

在软件商店中搜索它们会显示已安装,我可以从那里启动它们。

为什么默认外壳对此很重要?

fish unity-dash snap
  • 5 5 个回答
  • 1268 Views

5 个回答

  • Voted
  1. Best Answer
    Elder Geek
    2018-05-10T08:08:31+08:002018-05-10T08:08:31+08:00

    您最初在问题chsh -s which bash中使用的命令是您所说的错字,这导致您的问题产生了很大的混乱。即使它已经用 ` 符号正确形成,bash 如下所示。

    在此处输入图像描述 它会将外壳更改为bash(默认)。更改要fish使用的外壳

    在此处输入图像描述 或者简单地使用命令 chsh并输入要使用的 shell 的路径。见下文:

    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]: 
    

    有关鱼壳的更多信息,请参阅此。

    编辑:关于快照包:默认外壳重要吗?答案是可能的,因为它取决于程序员所做的假设和所采用的方法。请参阅上一个链接中 bash 和 fish 如何处理事物的差异。例如,fish 没有隐式子shell,这可能会对期望类似于 bash 的行为的程序员在变量赋值中产生令人惊讶的副作用。这里有一个很好的例子来说明对隐式子shell 的期望。

    为什么?为了澄清,似乎在fish和其他更常见的shell(如bash)之间对继承概念的处理方式不同。我的理解是,这可能会导致管道、循环和函数(所有这些都是常用的编程策略)的意外行为。

    程序员也可能依赖shell 内置函数,这些函数可能不存在于 fish 中,或者可能以意想不到的方式实现。

    资料来源:

    • man chsh
    • fish在维基百科上
    • Unix 和 Linux 上的子shell

    • SuperUser.com 上的相关帖子

    • 3
  2. Cédric Van Rompay
    2018-12-24T07:31:59+08:002018-12-24T07:31:59+08:00

    似乎 Ubuntu 使用默认 shell 调用 snap 应用程序,并且似乎假设 shell 是 bash(或与 bash 兼容,如 zsh)。

    我遇到了同样的问题(在 Ubuntu 18.10 上): 之后chsh -s `which fish` ,即使添加/snap/bin到$PATH.

    我通过将默认 shell 设置为 Bash 解决了这个问题,而是更改了我的终端应用程序调用的(因为我主要通过终端模拟器使用我的 shell):

    • 打开终端
    • 转到Preferences,单击您的配置文件,然后单击命令选项卡,勾选“运行自定义命令而不是我的 shell”,然后在自定义命令中放置fish。
    • 为每个配置文件执行此操作

    在此处输入图像描述

    之后,启动 Gnome-Terminal(从 Gnome Shell 或使用Ctrl++ Alt)T将启动 Fish shell,但系统 shell 仍将是 Bash,因此不会中断。

    然而,这意味着生成面向用户的 shell(例如 Visual Studio Code)的其他应用程序可能也需要自定义才能使用 Fish 而不是 Bash。

    • 1
  3. Anonimoak
    2019-01-19T02:34:04+08:002019-01-19T02:34:04+08:00

    底部有一个 TL;DR。

    为了让 gnome-shell 能够启动 Snaps,它需要两件事(括号中的值在我的 Fedora 29 桌面上,它有同样的问题):

    • 包含 Snap ( /var/lib/snapd/snap/bin)的路径
    • XDG_DATA_DIRS 到 Snap Desktop 文件 ( /var/lib/snapd/desktop)

    这些变量是/etc/profile.d/snapd.sh通过/etc/profile传统的 bash 启动配置的。

    当你切换到fish时,整个/etc/profile启动被跳过。

    由于大多数发行版都假定使用 bash 并将配置脚本安装到/etc/profile.d中,因此根本chsh -s /bin/fish不会使用它们。gnome-shell 找不到快照就是这样的症状之一。

    到目前为止,我最好的解决方案是仅使用 fish 一个交互式外壳,并让 bash 留在原地做其他的家务。

    TL;博士

    将用户默认 shell 保留为 bash:

    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(使其特定于 bash):

    # we want to run fish most of the time, but this is invoked by bash --login
    if [ -f /etc/bashrc ]; then
        . /etc/bashrc
    fi
    
    
    • 0
  4. Sayed H Fatimi
    2020-09-04T10:59:05+08:002020-09-04T10:59:05+08:00

    将此添加到您的~/.config/fish/config.fish文件中

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

    使用fisher安装bass:

    fisher add edc/bass
    

    或使用 omf 安装低音:

    omf install bass
    

    重新加载您的会话,现在一切都应该正常工作:)

    • 0
  5. Simos
    2018-05-14T15:01:45+08:002018-05-14T15:01:45+08:00

    您已安装的快照可以在 /snap/bin/ 中找到。您需要在 $PATH 中有该目录。

    Ubuntu 会自动将 /snap/bin 添加到您的 $PATH。它发生在 /etc/profile.d/apps-bin-path.sh 中,它在您获得登录 shell 时运行。

    我检查了,fish还添加/snap/bin到 $PATH 所以通常应该没问题。

    你能告诉我们命令的输出吗

    echo $PATH
    

    如果输出有/snap/bin,那么恭喜您在 Ubuntu 中发现了一个错误,您可以在 Launchpad 上提交报告。

    另外:Ubuntu 内部可能使用 $SHELL 来编写一些脚本。fish外壳不是 100% 兼容的,bash看起来这是问题的原因。当您将登录 shell 更改为bash. 例如,请参阅此报告https://youtrack.jetbrains.com/issue/CPP-2919,其中用户将其 shell 更改为/bin/tcsh.

    您需要向 Ubuntu 提交错误报告,以便有人调查并修复内部脚本以使用fish. 如果你真的爱fish,那就是你需要做的。;-)

    • -1

相关问题

  • 点击板载会窃取破折号的焦点

  • 为什么 Document Viewer 没有作为已安装的应用程序出现在仪表板中?

  • Unity 的破折号索引和搜索如何工作?

  • 使用 w3m 以外的其他浏览器来阅读 HTML 帮助文件?

  • 将命令行参数传递给别名函数的fish和bash之间的区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve