Ubuntu 18.04でシェルをfishに変更しました
chsh -s `which fish`
MaillspringおよびVisual Studio Codeスナップアプリをインストールしました。これらは正常にインストールされ、最初はダッシュから起動できましたが、ログインしてログアウトすると、ダッシュには表示されなくなりました。
インストールされているソフトウェアストアショーでそれらを検索すると、そこから起動できます。
デフォルトのシェルがこれに重要なのはなぜですか?
chsh -s which bash
の質問で元々持っていたコマンドは、あなたの質問の周りでかなりの混乱を引き起こしたタイプミスを言ったようでした。以下に示すように、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]:
フィッシュシェルの詳細については、 this。 を参照してください。
EDIT:スナップパッケージに関して:デフォルトのシェルは重要ですか?答えはおそらくです。これは、プログラマーが行った仮定とアプローチによって異なります。前のリンクのbashとfishの処理方法の違いを参照してください。たとえば、fishには暗黙的なサブシェルがなく、bashと同様の動作を期待しているプログラマーの変数割り当てに驚くべき副作用を引き起こす可能性があります。質問 here。 に暗黙的なサブシェルの期待の良い例があります
なぜ?明確にするために、継承の概念は、魚とbashのような他のより一般的なシェルの間で異なる方法で処理されるように見えます。私の理解では、これはパイプ、ループ、および関数(これらはすべて一般的に使用されるプログラミング戦略です)から予期しない動作を引き起こす可能性があるということです。
また、プログラマは Shell builtins に依存している場合がありますが、これは fishに存在する ではないか、予期しない方法で実装される可能性があります。
ソース:
下部にTL; DRがあります。
Gnome-Shellがスナップを開始できるようにするには、次の2つのことが必要です(括弧内の値は、同じ問題を抱えているFedora 29デスクトップ上にあります)。
/var/lib/snapd/snap/bin
)/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を残して他のハウスキーピングを行うことです。
ユーザーのデフォルトのシェルを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
ここで同じ問題(Ubuntu 18.10):chsh -s `which fish`
の後、/snap/bin
を$PATH
に追加した後でも、Gnome Shellはsnappアプリを見つけられません。
私の回避策:
fish
。その後、Gnome-Terminalを起動します(Gnome Shellから、または Ctrl+Alt+T)はFish Shellを起動しますが、システムShellはBashのままなので、何も壊れません。
ただし、これは、ユーザー向けのシェル(Visual Studio Codeなど)を生成する他のアプリケーションも、Bashの代わりにFishを使用するためにカスタマイズが必要になる可能性があることを意味します。