less than 1 minute read

管理者権限のある場合のシェルのインストール,変更方法

まず管理者権限がある場合のシェルのインストールはaptdnfで普通にできる.管理者権限がない場合はマニュアルインストールするしかない.

シェルの変更方法だが,これは以下のコマンドを使えば容易に実行できる.

## 現在利用しているシェルの種類を表示
$ echo ${SHELL}
/bin/bash

## 利用できるシェルの一覧表示
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

## シェルをzshに変更
$ chsh -s /bin/zsh

しかし,root権限がないばあい,chshコマンドは実行できないので,.bash_profilezshと書いて強制的にzshを起動させるしかない.したがって普通のサーバーだとLDAPなどでユーザーが自分の使うシェルを変更できるようになっている.しかし最近利用しているサーバーはこの機能がなく,自分で一からやる羽目になった.

zshのマニュアルインストール

zshを入れようとしたら

configure: error: "No terminal handling library was found on your system.
This is probably a library called 'curses' or 'ncurses'.  You may
need to install a package called 'curses-devel' or 'ncurses-devel' on your
system."

というエラーでconfigureが実行できなかった.出力にあるようにncursesをインストールすることで解決できた.ncursesは端末に依存しない形式でテキストユーザインタフェース (TUI) を作成するためのAPIを提供するライブラリ(by wikipedia)とのこと.このページから適当なバージョンを持ってくる.自分はv5.7でためして成功した.

適当なディレクトリにダウンロードしたら解凍してcd ncurses-5.7で中に入り,configureを実行する.prefixでインストール場所を指定しないと,デフォルトで/usr/localにインストールしようとするので注意が必要.また,without-cxx-bindingオプションがないとエラーで落ちてしまった.これはc++に関するファイルを作成しないようにするもので,zshを使う限りにおいてはこのオプションをつけても問題なさそう.詳しいオプションについてはINSTALLというファイルにかなり詳細に乗っているのでエラーが出たらまずはこのファイルをチェックするとよい.

./configure \
--prefix=$HOME/.local/ncurses \
--without-cxx-binding \
--with-shared \
--enable-widec

configureが成功して以下のように出力された.

** Configuration summary for NCURSES 5.7 20081102:

     extended funcs: yes
     xterm terminfo: xterm-new

      bin directory: ~/.local/ncurses/bin
      lib directory: ~/.local/ncurses/lib
  include directory: ~/.local/ncurses/include/ncursesw
      man directory: ~/.local/ncurses/man
 terminfo directory: ~/.local/ncurses/share/terminfo

** Include-directory is not in a standard location

最後にmake installを実行する.

$ make
$ make install

これでncursesのインストールは完了したので,次にzshのインストールを行う.今回はv5.6.2をダウンロードしてきた.ディレクトリに入って以下のconfigureコマンドを実行する.オプションについては先駆者のページを参考にした.大切なのはenable-cflagsなどのところで,ここでncursesをインストールした時にできたディレクトリを指定する.

./configure \
--prefix=$HOME/.local/zsh \
--enable-cflags="-I $HOME/.local/ncurses/include" \
--enable-cppflags="-I $HOME/.local/ncurses/include" \
--enable-ldflags="-L $HOME/.local/ncurses/lib" \
--enable-multibyte \
--enable-locale \
--with-tcsetpgrp

無事にconfigureが通ったら

$ make
$ make install

でインストールする.zsh${HOME}/.local/zsh/bin/zshにインストールされているので,.bash_profile

${HOME}/.local/zsh/bin/zsh

と記述すれば,ログイン時に自動でzshが起動するようにできる.