web-dev-qa-db-ja.com

Fishシェルを使用すると、スナップパッケージが消えるのはなぜですか?

Ubuntu 17.10のクリーンインストールを行った場合、snap経由でパッケージをインストールし、シェルにfishを変更します。再度ログインした後、gnome-Shellのメニューとお気に入りリストにパッケージがありません。

奇妙なことに、これはWaylandを使用している場合にのみ起こります。

この問題の原因は何ですか?シェルが正常に動作し、パスが正常であることを確認できます。また、これらのアプリケーションがスナップランまたはコマンドラインバージョンで正常に動作することを確認できますが、*。desktopファイルが欠落しているようです。

1
Ken Kinder
  1. 問題:問題はログインシェルにリンクされています。

変数XDG_DATA_DIRSは、/ etc/profile.dのソース(/etc/profile.d/apps-bin-path.sh)のときに設定されます

しかし、あなたの場合のようにフィッシュシェルまたはzshを使用する場合、/ etc/profile.d /を調達していないため、XDG_DATA_DIRSは設定されず、/ var/lib/snapd/desktop内の.desktopファイルは見つかりません。これはバグではありませんが、魚がPOSIX 1003.1と互換性がないためです。つまり、これらのシェルはbash構文を理解しません。

  1. 回避策:少なくとも2つの回避策が考えられます。

    I.-簡単な方法は、デフォルトのシェルを逆にしてbashすることです

    chsh -s/bin/bash

そして、行を追加します

fish 

〜/ .bashrcの最後。これを行うと、ログインシェルはbashになり、/ etc/profile.dがソースになりますが、端末を開くたびにfishを使用します。そして、ターミナルで「終了」と書くと、bashに戻ります。

II.-最も厄介なのは、魚をログインシェルとして保持し、/ etc/profile.dを強制的に取得することです。これを行うには、次の手順に従う必要があります。

a.-フィッシュシェルからフィッシャーとベースをインストールします(Make Bashユーティリティをフィッシュシェルで使用可能にします)。

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を編集し(存在しない場合は作成)、bassを使用して/etc/profile.dの下のすべてのファイルを取得します。

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

(他の端末は/etc/profile.dディレクトリを使用してファイルのリストを取得します。それらをコピーします)

次のようにリストをnano端末に貼り付けます。

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 

セッションを保存、閉じる、閉じる、または再起動して「ta-da」を実行します。

このオプションを使用すると、ログインシェルとしてfishを保持しますが、/ etc/profile.dディレクトリを時々チェックし、ソースになっていない新しいファイルがないことを確認する必要があります。

1
Esteban Vergara