web-dev-qa-db-ja.com

フィッシュシェルを使用して再ログインした後、スナップアプリケーションが表示されない

Ubuntu 18.04でシェルをfishに変更しました

chsh -s `which fish`

MaillspringおよびVisual Studio Codeスナップアプリをインストールしました。これらは正常にインストールされ、最初はダッシュから起動できましたが、ログインしてログアウトすると、ダッシュには表示されなくなりました。

インストールされているソフトウェアストアショーでそれらを検索すると、そこから起動できます。

デフォルトのシェルがこれに重要なのはなぜですか?

4
Calin

chsh -s which bashの質問で元々持っていたコマンドは、あなたの質問の周りでかなりの混乱を引き起こしたタイプミスを言ったようでした。以下に示すように、bashの周りの `記号で適切に形成されていたとしても。

enter image description here シェルをbash(デフォルト)に変更します。シェルをfishに変更するには

enter image description here または単に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]: 

フィッシュシェルの詳細については、 this。 を参照してください。

EDIT:スナップパッケージに関して:デフォルトのシェルは重要ですか?答えはおそらくです。これは、プログラマーが行った仮定とアプローチによって異なります。前のリンクのbashとfishの処理方法の違いを参照してください。たとえば、fishには暗黙的なサブシェルがなく、bashと同様の動作を期待しているプログラマーの変数割り当てに驚くべき副作用を引き起こす可能性があります。質問 here。 に暗黙的なサブシェルの期待の良い例があります

なぜ?明確にするために、継承の概念は、魚とbashのような他のより一般的なシェルの間で異なる方法で処理されるように見えます。私の理解では、これはパイプ、ループ、および関数(これらはすべて一般的に使用されるプログラミング戦略です)から予期しない動作を引き起こす可能性があるということです。

また、プログラマは Shell builtins に依存している場合がありますが、これは fishに存在する ではないか、予期しない方法で実装される可能性があります。

ソース:

3
Elder Geek

下部にTL; DRがあります。

Gnome-Shellがスナップを開始できるようにするには、次の2つのことが必要です(括弧内の値は、同じ問題を抱えているFedora 29デスクトップ上にあります)。

  • スナップを含めるパス(/var/lib/snapd/snap/bin
  • スナップデスクトップファイルへのXDG_DATA_DIRS(/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で検出されないスナップショットは、そのような症状の1つです。

私がこれまでに持っている最善の解決策は、魚をインタラクティブなシェルのみで使用し、bashを残して他のハウスキーピングを行うことです。

TL; DR

ユーザーのデフォルトのシェルを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
Anonimoak

ここで同じ問題(Ubuntu 18.10):chsh -s `which fish`の後、/snap/bin$PATHに追加した後でも、Gnome Shellはsnappアプリを見つけられません。

私の回避策:

  • オープンターミナル
  • Preferencesに移動し、プロファイルをクリックしてからcommandタブをクリックし、をチェックして代わりにカスタムコマンドを実行します私のシェル」その後、カスタムコマンドput fish
  • すべてのプロファイルに対してこれを行います

enter image description here

その後、Gnome-Terminalを起動します(Gnome Shellから、または Ctrl+Alt+T)はFish Shellを起動しますが、システムShellはBashのままなので、何も壊れません。

ただし、これは、ユーザー向けのシェル(Visual Studio Codeなど)を生成する他のアプリケーションも、Bashの代わりにFishを使用するためにカスタマイズが必要になる可能性があることを意味します。

0