2.1: Types of shell: interactive and login shells - A User's Guide to the Z-Shellを参照して記述
interactive shell
- まずshellとは「コマンドのリストを受け取り、ただそれを実行するもの」である。
- interactive shellとは、その言葉通り「対話的」なshellであり、ユーザーが何かコマンドを入力をし、結果を待ち、結果が返ってきた後にまた何か入力する、というやりとりが出来るものをいう。
- 一方fileを読み込んで処理する場合は non-interactiveである。またこのとき実行するfileをscriptと呼ぶ。
- interactive shellから
zsh filename
のようにコマンド入力して実行する場合、interactive shell上から、non-interactiveなshellが走っている。
- interactive shellから
login shell
- これも言葉通り password入力などでログインして使えるshellのこと。
- またlogin shellを起動するもう一つの方法として、
-l
optionを使うものがある。たとえばzsh filename
とするだけなら、これはlogin shellではないが、zsh -l filename
とすれば、login shellでscriptを実行可能。
interactive shell, login shellの判別方法
- 以下をzshにて実行すれば、login shellのときは
yes
、そうでないときはno
と出力される。
if [[ -o login ]]; then
print yes
else
print no
fi
- interactive shellかどうかは、対話可能であるかで判断できる。
- またlogin shell同様に以下を実行すれば、interactive shellのときは
yes
、そうでないときはno
が出力される。
if [[ -o interactive ]]; then
print yes
else
print no
fi
おまけ - 調査方法
-
***が分からない、そういう時はまずmanualやdocumentを見るべきなはず。
-
ということで
man zsh
を見た。- なお以下のversionを利用
$ zsh --version
zsh 5.4.2 (x86_64-ubuntu-linux-gnu)
- manualを斜め読みすると、どうやら http://zsh.sourceforge.net/Guide/ にユーザーガイドがあるとわかる。よってユーザーガイドを詳しく読んだ
- 正直manualが読みやすいとは思っていない。