端末シェル操作の基本的な流れについて(後半)
「端末シェル操作の基本的な流れについて(前半)」の続き。
シェルから抜ける
シェルから抜けるには、プロンプトが出ていてかつ入力文字列のないときにCtrl+Dを押すかexitコマンド*1を実行する。$ (Ctrl+D) (もしくは) $ exit
ログアウト時におけるサスペンド/バックグラウンド状態のジョブの挙動について
「シェル上のプロセスの動作状態(フォアグラウンド/バックグラウンド/サスペンド)とその制御について(前半)」「シェル上のプロセスの動作状態(フォアグラウンド/バックグラウンド/サスペンド)とその制御について(後半)」で扱っているサスペンド状態のプロセス(ジョブ)がある場合は(bashの場合) There are stopped jobs. (zshの場合) zsh: you have suspended jobs. (tcshの場合) There are suspended jobs.
のようなメッセージが表示され、再びログアウトを試みるとこれらのプロセスはSIGHUPというシグナル(関連記事)により終了する。
バックグラウンド状態のものについてもbashとzshでは同様にシェルから抜けたときに終了されるが
bash_or_zsh$ nohup [コマンド...] &
のようにしてnohupコマンドを用いつつバックグラウンドで起動したプロセスはログアウト時に終了されず、zshでは以下の設定によりバックグラウンド動作しているプロセスを終了しないようにできる。
ファイル名: ${ZDOTDIR}/.zshrc
setopt no_HUP
tcshの場合はバックグラウンドジョブがあるときのログアウト時に既定ではSIGHUPシグナルは送られずに、組み込みコマンドhupを用いて
tcsh$ hup [コマンド...] &
として起動したときにのみログアウト時にシグナルが送られる。
履歴について
コマンド行の入力時に上矢印キーまたはCtrl+P*2により、前回入力したコマンド行を表示してこれを編集して実行することができる。次(後)の順番に進めるには下矢印キーかCtrl+Nとなる。*3Ctrl+Rキー*4を押すと履歴の検索モードに入り、ここで入力した文字列を(1文字入力する度に)以前入力したコマンド行の記録から検索して一致するものを表示する。Ctrl+Rを繰り返し押すと同じ文字列をより過去に遡って再検索する。見つからない場合は表示が更新されず、ビープ音も出る。
履歴の件数はシェルの初期化ファイルにて設定できるが、シェルごとに設定項目は異なる。
シェル | 内部保持数 | ファイルへの記録数 |
---|---|---|
bash | HISTSIZE | HISTFILESIZE |
zsh | HISTSIZE | SAVEHIST |
tcsh | history | savehist*5 |
[内部保持数] >= [ファイルへの記録数]
となるようにする。