LinuxZaurus
■シェルを入れ替える

シェルとはそもそも何だろう

いきなりシェルといわれてもわからない人がいるかもしれませんが、シェルというのはLinuxのカーネル部分と人の間を仲介する役割を持っている、インタフェースだとどこかに書いていました。(汗)
つまりLinuxのコアとなるカーネルは人間から命令を受け取るようには出来ていなくて、人間はLinuxに処理させたい事柄をまずシェルに命令し、その命令をシェルがカーネルに伝えて実行させているようです。

シェルはメジャーどころでいうと2系統、BシェルとCシェルがあります。 それぞれ文法などが違い、Bシェルの知識はそのままCシェルでは生かせません。SL-C700にはBシェル系統のbashというシェルが使われているようです。

以前ターミナルを使えでコマンドの便利さについて少し触れましたが、ターミナルというのは実はGUI上でシェルの機能を利用するためのものだと言えます。

現行のシェルの不満点

で、私は使えば使うほどターミナル、というかシェルの楽しさにはまっているのですが、SL-C700が標準で起動するbashシェルには不満が出てくる部分があります。その最たるところがターミナルを開いたままサスペンドすると、ターミナル上で動いているプロセスが止まってしまうという事です。

例えばsuしてスーパーユーザーになった後作業中に一旦SL-C700をサスペンド、復帰するとsuコマンドが止められて一般ユーザーになっています。そうなるとそれまでの作業内容は最悪パアになります。また、bashシェルはそれまでに入力したコマンドの履歴を持っていて、↑キーで見ることが出来るので、かつて入力したコマンドを簡単に入力することが出来るのですが、その履歴も飛んでしまいます。

しかも復帰後はしばらくコンソールの挙動がおかしかったりしますしっていうか、実はまだまだシェルを深く使いこなせていない私にしてみれば今のところ目立った不満ってこれだけなのですけどね(汗)
しかし、これが結構うっとうしいんですよ。携帯性を妨げているというか、気軽に使えるけど気軽にしまえないというか。
まぁ、これ自体はどうやらbash全体の問題ではなくて、SL-C700に搭載されているbashの問題らしいです。そこで、今回別途シェルを導入してそっちを使おうと思いました。
ちなみにzhsについてはここを見ました。

ちょろっと探してみたところ、SL-C700でも動きそうなシェルにはこちらzshこちらarmutil(ダウンロード後.binを取ります)内のtcshがありました。

で、それぞれgoogleなんかで「zshとは」などといい加減に調べてみたのですがzshはBシェル、tcshはCシェルみたいです。zshの方がbashに対して上位互換があるとのことで、とりあえずなじみやすそうなzshにしてみることにしました。

入れ替えてみる

で、導入方法ですが、こちらからipkファイルをダウンロードして来て導入。しかし導入しただけでは毎回いちいちターミナルを立ち上げて

exec zsh

でbashからzshに切り替えて、という作業を行う必要があります。それでは面倒なので、デフォルトで立ち上げるターミナルを設定し直します。(execコマンドで立ち上げると起動したシェルが元のシェルの持っているプロセスを引き継ぎます、普通にシェル名だけで起動すると、元のシェル上で動くプロセスとして起動したシェルが動きます)

/home/QtPalmtop/

にある

qpe.sh

を編集することでデフォルトのシェルを変更出来ます。
編集するのは

export SHELL=/bin/bash

の行で

/bin/bash

の部分を変更したいシェルのパスに変更します。

which zsh

で確認するとzshのパスは

/home/QtPalmtop/bin/zsh

となっています。
そこで

export SHELL=/home/QtPalmtop/bin/zsh

と書きかえてSL-C700をリセットします。
これでターミナル起動時にデフォルトで起動するシェルがzshに変わります。
zshではプロンプトは

と表示されます。
ちなみに今私がzshで気に入っている機能は

vi =(finger / -name "*.txt")
で検索結果を仮のファイルに出力してviで開くことが出来る機能です。

感想と不満点

しばらく使っていますが、サスペンド→復帰でプロセスがkillされる(例えばsuコマンドがSTOPされて通常ユーザーに戻されるなど)という現象は回避できるようになりました。しかしながらsuした状態でviでファイルを開いていると、サスペンド→復帰でターミナルの画面に戻ってしまう、という現象が起こっています。suせずに普通のユーザーでviで開いているファイルはサスペンドしても普通に編集できるので、su状態でのviの挙動に問題があるのかもしれません。

とりあえず

fg

と入力後

:wq

とする事で編集内容を上書きセーブすることが出来るので、致命的な問題ではないのですが・・・・
時々管理者権限で無いと編集できないファイルなどもあるので不便です。まぁw!で強制的に書いてしまえばいいのかもしれませんが。(汗)

追記

解決方法を見つけました。
これについてはこちらで解決方法を記述しています。

と思っていたらこういうものを見つけました。
便利に使っています。

 

戻る