質問: お世話になっております。 最近よくサーバに接続してCUIでの操作をすることが多いのですが、サーバ側の標準のbashが見にくく、oh-my-zshを導入したいと思っています。 現在MacBook Airではzshとoh-my-zshを用いていて、既存のoh-my-zshのテーマを自分で少し書き換えたりできるのですが、実際のところzshとbashの関係(というか違い?)やoh-my-zshの仕組みもよくわかっていません。友人が使っていたからなんとなく使ったら見やすかったので1年弱くらい使い続けている、程度です。 話が逸れてしまったのですが、ssh接続で外部のサーバを操作するとき、サーバにログインした直後からbashの標準出力になってしまい、oh-my-zshのテーマが未適用になってしまいます。 ですが、本家のgithubのスクリーンショットを見る限りでは以下のようにssh接続をしてもきちんとテーマが反映されています。 ![スクリーンショット](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1c5e9ec0c31f8121cf78b975735cf30b.png) 上記のようにssh接続でサーバに接続をした時もoh-my-zshを有効にするにはサーバ(CentOS7です)側にもzshとoh-my-zshを導入しないといけないのでしょうか? また、試しにサーバ側にもzshとoh-my-zshを導入してみたのですが、agnosterで使われているフォントがインストールされていないためか文字化けを起こしてしまいます。 これはCentOSにフォントをインストールすれば解決しますでしょうか?解決するとしたらどのようにフォントをインストールすればよいでしょうか? CentOS 5系や6系のインストール方法はググれば出てくるのですが、7のインストール方法は出てこない上、CentOS6等で使われていた/usr/share/fonts/ディレクトリが見当たりません。 多方面で知識不足なためどこから手を付ければいいのか検討が付きません。ご教授お願い致します。
回答: > > 上記のようにssh接続でサーバに接続をした時もoh-my-zshを有効にするにはサーバ(CentOS7です)側にもzshとoh-my-zshを導入しないといけないのでしょうか? > > > はい。サーバ側で使用するものは、サーバ側にもインストールする必要があります。 ログイン直後から、zsh を使いたいのであれば、ログインユーザの login shell を zsh に変更してやる必要があります。 ログインユーザの login shell は、/etc/passwd の第7フィールドに記載されています。 ログインユーザ名が 'foo' だった場合、/etc/passwd に以下のような記載があるかと思います。 foo:x:1000:1000:foo user:/home/foo:/bin/bash この場合/bin/bashが login shell になりますので、foo でログインすると bash が使用されます。 zsh に変更するのであれば、usermod を使って変更してください。 usermod -s /usr/bin/zsh foo foo が利用するlogin shell を /usr/bin/zsh に変更します。 > > サーバにログインした直後からbashの標準出力になってしまい、oh-my-zshのテーマが未適用になってしまいます。 > > > これは、ログインしたユーザの login shell が /bin/bash を使うように指定されているからになります。 MacBook Air で利用しているテーマや font と同じものを使いたいということですが、MacBook Air で行ったフォントのインストール、テーマの設定と同じことをサーバ側でも行ってください。