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 => {},
			csh => {},
			es => undef,
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
	},
	{
		support => {
			bash => {},
			csh => {},
			es => undef,
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Aliases',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {},
			ksh => {},
			rc => {},
			sh => {
				since => 0,
			},
			tcsh => undef,
			zsh => {},
		},
		title => 'Shell functions',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {},
			ksh => {},
			rc => {},
			sh => {},
			tcsh => undef,
			zsh => {},
		},
		title => '"Sensible" Input/Output redirection',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => {
				alt => 'function',
			},
			ksh => {},
			rc => {
				alt => 'function',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Directory stack',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Command history',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Command line editing',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {
				note => 'emulation is thought by many to be incomplete',
				partial => 1,
			},
			zsh => {},
		},
		title => 'Vi Command line editing',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Emacs Command line editing',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {
				optional => 'requires readline',
			},
			ksh => undef,
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Rebindable Command line editing',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'User name look up',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => {
				alt => 'function',
			},
			ksh => undef,
			rc => {
				alt => 'function',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Login/Logout watching',
	},
	{
		support => {
			bash => {},
			csh => {
				since => 0,
			},
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Filename completion',
	},
	{
		support => {
			bash => {},
			csh => {
				since => undef,
			},
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Username completion',
	},
	{
		support => {
			bash => {},
			csh => {
				since => undef,
			},
			es => {
				optional => 'requires readline',
			},
			ksh => {},
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Hostname completion',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {
				optional => 'requires readline',
			},
			ksh => undef,
			rc => {
				optional => 'requires readline',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'History completion',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => undef,
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Fully programmable Completion',
	},
	{
		support => {
			bash => {
				alt => 'patch',
				note => 'unofficial patches exist to perform this',
			},
			csh => undef,
			es => undef,
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => {
				alt => 'function',
				note => 'This can be done via the shells programmable completion mechanism.',
			},
			zsh => {
				alt => 'function',
				note => 'This can be done via the shells programmable completion mechanism.',
			},
		},
		title => 'Mh Mailbox completion',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => undef,
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => undef,
			zsh => {},
		},
		title => 'Co Processes',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => undef,
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Builtin artithmetic evaluation',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => undef,
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Can follow symbolic links invisibly',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => undef,
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Periodic command execution',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {},
			ksh => {},
			rc => {},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Custom Prompt (easily)',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => undef,
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => undef,
			zsh => {},
		},
		title => 'Sun Keyboard Hack',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => undef,
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Spelling Correction',
	},
	{
		support => {
			bash => {
				since => undef,
			},
			csh => undef,
			es => {},
			ksh => undef,
			rc => {},
			sh => undef,
			tcsh => undef,
			zsh => {},
		},
		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 => {},
			csh => undef,
			es => {},
			ksh => {
				alt => 'patch',
				note => "A version called 'pdksh' is freely available, but does not have the full functionality of the AT&T version.",
			},
			rc => {},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Freely Available',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => {
				alt => 'function',
			},
			ksh => {},
			rc => {
				alt => 'function',
			},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Checks Mailbox',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => undef,
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Tty Sanity Checking',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {},
			ksh => {},
			rc => {},
			sh => {},
			tcsh => {},
			zsh => {},
		},
		title => 'Can cope with large argument lists',
	},
	{
		support => {
			bash => {
				alt => 'config',
				note => 'Only by specifying a file via the ENV environment variable.',
			},
			csh => {},
			es => undef,
			ksh => {
				alt => 'config',
				note => 'Only by specifying a file via the ENV environment variable.',
			},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Has non-interactive startup file',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => undef,
			ksh => {
				alt => 'config',
				note => 'Only by specifying a file via the ENV environment variable.',
			},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'Has non-login startup file',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => {},
			ksh => undef,
			rc => {},
			sh => undef,
			tcsh => undef,
			zsh => {},
		},
		title => 'Can avoid user startup files',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => undef,
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => undef,
			zsh => undef,
		},
		title => 'Can specify startup file',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => {},
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => undef,
			zsh => undef,
		},
		title => 'Low level command redefinition',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => {},
			ksh => undef,
			rc => {},
			sh => undef,
			tcsh => undef,
			zsh => undef,
		},
		title => 'Has anonymous functions',
	},
	{
		support => {
			bash => undef,
			csh => {},
			es => {},
			ksh => {},
			rc => {},
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'List Variables',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {},
			ksh => {},
			rc => {},
			sh => {},
			tcsh => undef,
			zsh => {},
		},
		title => 'Full signal trap handling',
	},
	{
		support => {
			bash => {},
			csh => {},
			es => {
				alt => 'function',
			},
			ksh => {},
			rc => undef,
			sh => undef,
			tcsh => {},
			zsh => {},
		},
		title => 'File no clobber ability',
	},
	{
		support => {
			bash => {},
			csh => undef,
			es => {},
			ksh => {},
			rc => {},
			sh => undef,
			tcsh => undef,
			zsh => {},
		},
		title => 'Local variables',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => {},
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => undef,
			zsh => undef,
		},
		title => 'Lexically scoped variables',
	},
	{
		support => {
			bash => undef,
			csh => undef,
			es => {},
			ksh => undef,
			rc => undef,
			sh => undef,
			tcsh => undef,
			zsh => undef,
		},
		title => 'Exceptions',
	},
],

}
