+use utf8;
+use strict;
+
++{
+
+agents => {
+ sh => {
+ name => "Bourne shell",
+ os => 'v7',
+ },
+ bash => {
+ name => "GNU Bourne-Again SHell",
+ os => 'linux',
+ },
+ csh => {
+ name => "C Shell",
+ },
+ tcsh => {
+ name => "Tenex C Shell",
+ os => 'freebsd',
+ },
+ ksh => {
+ name => "AT&T KornShell",
+ },
+ es => {
+ name => "Extensible Shell",
+ },
+ rc => {
+ name => "Run Commands",
+ os => 'plan9',
+ },
+ zsh => {
+ name => "Z shell",
+ },
+},
+
+feature => [
+
+ {
+ title => "Job control",
+ description => "",
+ links => [
+ {
+ title =>
+ url => '',
+ },
+ ],
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "N",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "N",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Aliases",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "Y(1)",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Shell functions",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "Y",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "\"Sensible\" Input/Output redirection",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "F",
+ ksh => "Y",
+ rc => "F",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Directory stack",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Command history",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Command line editing",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y(3)",
+ zsh => "Y",
+ },
+ title => "Vi Command line editing",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Emacs Command line editing",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "L",
+ ksh => "N",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Rebindable Command line editing",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "User name look up",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "F",
+ ksh => "N",
+ rc => "F",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Login/Logout watching",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y(1)",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Filename completion",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y(2)",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Username completion",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y(2)",
+ es => "L",
+ ksh => "Y",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Hostname completion",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "L",
+ ksh => "N",
+ rc => "L",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "History completion",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "N",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Fully programmable Completion",
+ },
+ {
+ support => {
+ bash => "N(4)",
+ csh => "N",
+ es => "N",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "N(6)",
+ zsh => "N(6)",
+ },
+ title => "Mh Mailbox completion",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "N",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Co Processes",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "N",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Builtin artithmetic evaluation",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "N",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Can follow symbolic links invisibly",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "N",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Periodic command execution",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Custom Prompt (easily)",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "N",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Sun Keyboard Hack",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "N",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Spelling Correction",
+ },
+ {
+ support => {
+ bash => "Y(2)",
+ csh => "N",
+ es => "Y",
+ ksh => "N",
+ rc => "Y",
+ sh => "N",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Process Substitution",
+ },
+ {
+ support => {
+ bash => "sh",
+ csh => "csh",
+ es => "rc",
+ ksh => "sh",
+ rc => "rc",
+ sh => "sh",
+ tcsh => "csh",
+ zsh => "sh",
+ },
+ title => "Underlying Syntax",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "N(5)",
+ rc => "Y",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Freely Available",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "F",
+ ksh => "Y",
+ rc => "F",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Checks Mailbox",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "N",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Tty Sanity Checking",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "Y",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Can cope with large argument lists",
+ },
+ {
+ support => {
+ bash => "Y(7)",
+ csh => "Y",
+ es => "N",
+ ksh => "Y(7)",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Has non-interactive startup file",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "N",
+ ksh => "Y(7)",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "Has non-login startup file",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "Y",
+ ksh => "N",
+ rc => "Y",
+ sh => "N",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Can avoid user startup files",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "N",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "N",
+ zsh => "N",
+ },
+ title => "Can specify startup file",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "Y",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "N",
+ zsh => "N",
+ },
+ title => "Low level command redefinition",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "Y",
+ ksh => "N",
+ rc => "Y",
+ sh => "N",
+ tcsh => "N",
+ zsh => "N",
+ },
+ title => "Has anonymous functions",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "Y",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "List Variables",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "Y",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Full signal trap handling",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "Y",
+ es => "F",
+ ksh => "Y",
+ rc => "N",
+ sh => "N",
+ tcsh => "Y",
+ zsh => "Y",
+ },
+ title => "File no clobber ability",
+ },
+ {
+ support => {
+ bash => "Y",
+ csh => "N",
+ es => "Y",
+ ksh => "Y",
+ rc => "Y",
+ sh => "N",
+ tcsh => "N",
+ zsh => "Y",
+ },
+ title => "Local variables",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "Y",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "N",
+ zsh => "N",
+ },
+ title => "Lexically scoped variables",
+ },
+ {
+ support => {
+ bash => "N",
+ csh => "N",
+ es => "Y",
+ ksh => "N",
+ rc => "N",
+ sh => "N",
+ tcsh => "N",
+ zsh => "N",
+ },
+ title => "Exceptions",
+ },
+
+],
+
+}