shell周りの用語の分類
シェル(shell)
UNIX環境では、OSのユーザーインターフェースを担当する部分のこと
シェルはいくつか種類がありユーザーが切り替えて使うことができる
インタラクティブシェル (interactive shell)
対話的環境で使う
入力補完や入力履歴はシェルの役割
ユーザーがログインしたとき実行されるシェルはログインシェル(login shell)という
ユーザー独自の設定が可能(aliasとか、環境変数とか)
ログインしたとき設定ファイルを読み込む
シェルスクリプト実行時は、この設定ファイルを読み込まないので注意が必要
シェルスクリプト (shell script)
バッチ的に使う
例えば、夜間に行われる各種の保守作業など
システムに負担をかけないため、シェルスクリプトには多機能のシェルは使わないことが多い
デメリットをわかっていたら、べつに多機能のシェルでスクリプトを書いて使ってもかまわない
スクリプトを書くのに必要最小限なシェルを使うことが多い
互換性のため
セキュリティリスクを減らすため
本当かな?inajob.icon
セキュリティリスクの種類に寄りそうだが、シェルスクリプトで書かれたプログラムに堅牢さは期待しないなぁ
便利な機能は悪用されるとセキュリティホールになり得るので、あえて低性能のシェルを使っているとのことですsuto3.icon
シェルスクリプト (shell script)
例:sh, csh, bash, zsh, fish shell,PowerShell, コマンドプロンプトで使う言語
↑の説明少し変ではないかい suto3.icon
shell scriptを書くときに使う言語をshell scriptと呼ぶと勘違いしてましたtakker.icon
とすると、「shell scriptを書くときに使う言語」はなんと呼ぶのだろう?
/suto3/シェルコマンドかな?
コンソール(console)
元々はコンピュータ本体の操作卓のこと
今はターミナルで、ほとんど全ての操作ができるので、ターミナルとほぼ同じ意味である
ターミナル(terminal)
端末装置
そういう機械を売っていた(実物は見たことがない)
VT100 とか
一台のコンピュータ(ホスト)に複数のターミナルがつながっていた(らしい)
ターミナルエミュレータ (Terminal emulator)
例:xterm, kterm, fbterm, コマンドプロンプト, ConEmu, Hyper, TeraTerm, Windows Terminal, vimのterminal mode, vscodeのterminal tab
ターミナルをエミュレートする(真似をする)ソフトウェア
例えば、VT100という設定をするとVT100という端末装置のふりをしてサーバーと通信をする
ターミナルマルチプレクサ (terminal multiplexer)
例:tmux
ターミナルエミュレータと違いがあるのか?takker.icon
マルチプレクサだから多重化するものという意味 suto3.icon
ということは、Windows TerminalもConEmuもterminal multiplexer?takker.icon
複数の「cmd.exeやPowerShell.exeのようなshell scriptを実行するアプリケーション」を起動できる
ターミナルで動く、ターミナルを多重化するソフトウェアのことかな?inajob.icon
そうすれば上の疑問は解消しそう
テキストエディタ (text editor)
例:vscode, vim, emacs, メモ帳
インタラクティブシェル (interactive shell)
例:cmd.exe, PowerShell.exe
これらに入力する言語をシェルスクリプトと呼ぶ違ったっぽい
インタラクティブシェルとシェルスクリプトの名前が同じなものがほとんど
インタラクティブ(対話的)に使うシェル
こうしたほうがわかりやすくない?suto3.icon
シェル(shell)
インタラクティブシェル(対話的に使う)
シェルスクリプト(バッチ的に使う)
そういう意味だったのかtakker.icon
勘違いしてました
直しました
定義を見たことがないなinajob.icon
何か違和感があるが、良い書き方を提案できるほど知らない
この定義を知らなくて困ることがないのでそこまで厳密さが気にならない
/suto3/シェルまわりを読むとわかりそうtakker.icon
調査ログ:Windowsにおけるターミナルやインタラクティブシェルの関係