« テレビ番組等感想 その 133 | トップページ | Firefox の挙動 »

2008年9月23日 (火)

Yash 2 その 58: suspend コマンド

suspend 組込みコマンドを付けた。

Ksh だと suspend は単なる kill -s STOP $$ のエイリアスだったりするのだが、サスペンドする前にシェル自身のプロセスグループを戻す処理を行うために、独立したコマンドとして組み込む必要がある。(→bash を suspend するとはまることがある)

Bash や zsh では、ログインシェルで suspend を使うとエラーになるが、yash では気にせずサスペンドする。ログインシェルをサスペンドしても嵌まるだけで意味がないというのは確かだが、嵌まるかどうかはログインシェルかどうかで一概に決められるものでもないので、本当にサスペンドしてよいかどうかの決断はユーザに任せることにした。多分、$SHLVL 変数が 1 かどうかでサスペンドしてよいかどうかを判定したほうが嬉しい場合が多いので、.yashrc で suspend を関数として再定義して、このような判定を追加するとよい。

suspend ()
if [ "$SHLVL" = 1 ] && [ "$1" != "-f" ]; then
    echo "cannot suspend" >&2
    return 1
else
    command suspend
fi

注: yash 自身は $SHLVL 変数の値をいじらないので、$SHLVL をインクリメントする処理も別途 .yashrc に書く必要がある。

|

« テレビ番組等感想 その 133 | トップページ | Firefox の挙動 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/42566631

この記事へのトラックバック一覧です: Yash 2 その 58: suspend コマンド:

» Yash 2 その 130: suspend コマンド 再び [まじかんと雑記]
suspend コマンドに -f オプションを付けた。 [続きを読む]

受信: 2009年8月10日 (月) 13時11分

« テレビ番組等感想 その 133 | トップページ | Firefox の挙動 »