これを達成する普遍的な方法はありません。

これを達成する普遍的な方法はありません。

電力線フォントが正しく表示される必要がある宇宙船プロンプトzshテーマをインストールしました。したがって、DEのターミナルエミュレータ内で実行されるシェルではなく、tty(私が知っている限りビットマップフォントのみを使用できます)で直接実行されるシェルでこれを無効にしたいと思います。

私はこれを私の.zshrcに入れてみました。

if [[ -o login ]] ; then
    return
fi

ログインシェルで設定の読み込みを無効にしますが、suを使用するとターミナルエミュレータ(Konsole)で実行しても、ルートシェルもログインとして表示されます。

➜ su
Password: 
n750jv# echo $-
569XZilms

関係があるかどうかはわかりませんが、実際には/rootにある.zshrcへのシンボリックリンクを作成し、構成が同期状態を維持します。

注:ttyでecho $ -を実行すると、まったく同じ出力が表示されます。569XZilms

ベストアンサー1

zshを実行している端末に特定の文字が正しく表示されるかどうかを知りたいことがわかりました。 (しかし、これはフォントの種類には関係ありません。文字エンコーディングとフォントに使用する文字が含まれているかどうかに関連しています。)

環境変数を使用して、シェルがTERM実行されている端末を確認してください。これはフォントオーバーレイのための良い経験的な方法です。

すべてをスキップしないでください.zshrc。エイリアス、完成など、シェルの実行場所に関係なく、ほとんどの設定が意味があります。プロンプトの内容のみが変更されます。

case $TERM in
  xterm*|konsole*)
    set_fancy_prompt;;
  *)
    set_less_fancy_prompt;;
esac

あるいは、端末がUnicodeを使用するのか8ビットのエンコーディングを使用するのかは、十分に優れた経験的方法かもしれません。ロケールカテゴリはLC_CTYPE良い経験的方法でなければなりません。

case ${(L)LC_ALL:-${LC_CTYPE:-$LANG}} in
  *UTF*)
    set_fancy_prompt;;
  *)
    set_less_fancy_prompt;;
esac

これはログインシェルかどうかには関係ありません。たとえば、SSH経由でログインしている場合は、ログイン場所によっては、テキストコンソール、GUI端末、または他の種類の端末(または端末なし)に表示されるログインシェルが表示されます。

おすすめ記事