I don't understand what this is about, but I hope you will. Would you please ack receipt of the message? Then I presume you will DTRT.
------- Start of forwarded message ------- X-Spam-Status: No, score=2.6 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,FROM_LOCAL_NOVOWEL,HK_RANDOM_ENVFROM, HK_RANDOM_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2 From: Ryan Cunningham <rvskmbr...@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_0FFE68EB-40A8-4B26-B362-C6D78F1EEECE" Message-Id: <d02a5b69-19fb-4db4-9363-b58cd997e...@gmail.com> Subject: Re: Type-in programs using BASH Date: Sun, 25 Jan 2015 09:38:42 -0800 To: r...@gnu.org In-Reply-To: <918f1a86-e374-4412-94e0-f236649c6...@gmail.com> - --Apple-Mail=_0FFE68EB-40A8-4B26-B362-C6D78F1EEECE Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Another minor correction. This should be my last correction before your = team=E2=80=99s discussion on what corrections it makes. > On Jan 25, 2015, at 9:32 AM, Ryan Cunningham <rvskmbr...@gmail.com> = wrote: >=20 > I have some minor corrections: This addendum (as it is now labeled) = now also requires publishers to supply both a URL at which users can = download and a mailing address or phone number through which users can = request programs designed to assist users in typing type-in programs = published in object code form, as opposed to only requiring publishers = to supply either such a URL or such a mailing address or phone number. >=20 > <type-in-addendum.txt> >=20 >=20 >> On Jan 24, 2015, at 9:12 PM, Ryan Cunningham <rvskmbr...@gmail.com = <mailto:rvskmbr...@gmail.com>> wrote: >>=20 >> I correct the hyphenation of =E2=80=9Cbrick-and-mortar=E2=80=9D in = the definition of a =E2=80=9Ctype-in program=E2=80=9D. >>=20 >> <type-in-exception.txt> >>=20 >>> On Jan 24, 2015, at 9:10 PM, Ryan Cunningham <rvskmbr...@gmail.com = <mailto:rvskmbr...@gmail.com>> wrote: >>>=20 >>> Yet another unnecessary word is removed in the same definition. >>>=20 >>> <type-in-exception.txt> >>>=20 >>>> On Jan 24, 2015, at 9:06 PM, Ryan Cunningham <rvskmbr...@gmail.com = <mailto:rvskmbr...@gmail.com>> wrote: >>>>=20 >>>> I attach a new draft of the Type-In Program Exception, which merely = fixes a grammar error by removing an unnecessary word in the definition = of an =E2=80=9Caggregate=E2=80=9D. >>>>=20 >>>> <type-in-exception.txt> >>>>=20 >>>>> On Jan 24, 2015, at 8:56 PM, Ryan Cunningham <rvskmbr...@gmail.com = <mailto:rvskmbr...@gmail.com>> wrote: >>>>>=20 >>>>> Dear Mr. Stallman, >>>>>=20 >>>>> I am Ryan Cunningham, a high school sophomore and computer = enthusiast with autism spectrum disorder (ASD). I am simply enthused by = the idea of free and open-source software. >>>>>=20 >>>>> I would like to tell you that, while writing a draft Type-In = Program Exception to the GNU GPL, I=E2=80=99ve made an interesting = discovery: Sending a here-document to BASH (of course from a shell that = supports here-documents) can actually enable BASH to execute the same = kind of type-in program you=E2=80=99d see in the =E2=80=9980s! (Only = it=E2=80=99s in BASH=E2=80=99s language, not BASIC; by the way, this is = not a bug.) >>>>>=20 >>>>> A transcript of an example shell session proving the same is = attached below. >>>>>=20 >>>>> $ bash <<'EOF' >>>>> > date >>>>> > help >>>>> > EOF >>>>> Sat Jan 24 20:35:21 PST 2015 >>>>> GNU bash, version 4.3.30(2)-release (x86_64-apple-darwin14.0.0) >>>>> These shell commands are defined internally. Type `help' to see = this list. >>>>> Type `help name' to find out more about the function `name'. >>>>> Use `info bash' to find out more about the shell in general. >>>>> Use `man -k' or `info' to find out more about commands not in this = list. >>>>>=20 >>>>> A star (*) next to a name means that the command is disabled. >>>>>=20 >>>>> job_spec [&] history [-c] [-d offset] = [n] or hist> >>>>> (( expression )) if COMMANDS; then = COMMANDS; [ elif C> >>>>> . filename [arguments] jobs [-lnprs] [jobspec = ...] or jobs > >>>>> : kill [-s sigspec | -n = signum | -sigs> >>>>> [ arg... ] let arg [arg ...] >>>>> [[ expression ]] local [option] = name[=3Dvalue] ... >>>>> alias [-p] [name[=3Dvalue] ... ] logout [n] >>>>> bg [job_spec ...] mapfile [-n count] [-O = origin] [-s c> >>>>> bind [-lpsvPSVX] [-m keymap] [-f file> popd [-n] [+N | -N] >>>>> break [n] printf [-v var] format = [arguments] >>>>> builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | = dir] >>>>> caller [expr] pwd [-LP] >>>>> case WORD in [PATTERN [| PATTERN]...)> read [-ers] [-a array] = [-d delim] [-> >>>>> cd [-L|[-P [-e]] [-@]] [dir] readarray [-n count] [-O = origin] [-s> >>>>> command [-pVv] command [arg ...] readonly [-aAf] = [name[=3Dvalue] ...] o> >>>>> compgen [-abcdefgjksuv] [-o option] > return [n] >>>>> complete [-abcdefgjksuv] [-pr] [-DE] > select NAME [in WORDS ... = ;] do COMM> >>>>> compopt [-o|+o option] [-DE] [name ..> set [-abefhkmnptuvxBCHP] = [-o option-> >>>>> continue [n] shift [n] >>>>> coproc [NAME] command [redirections] shopt [-pqsu] [-o] = [optname ...] >>>>> declare [-aAfFgilnrtux] [-p] [name[=3Dv> source filename = [arguments] >>>>> dirs [-clpv] [+N] [-N] suspend [-f] >>>>> disown [-h] [-ar] [jobspec ...] test [expr] >>>>> echo [-neE] [arg ...] time [-p] pipeline >>>>> enable [-a] [-dnps] [-f filename] [na> times >>>>> eval [arg ...] trap [-lp] [[arg] = signal_spec ...] >>>>> exec [-cl] [-a name] [command [argume> true >>>>> exit [n] type [-afptP] name [name = ...] >>>>> export [-fn] [name[=3Dvalue] ...] or ex> typeset [-aAfFgilrtux] = [-p] name[=3Dva> >>>>> false ulimit = [-SHabcdefilmnpqrstuvxT] [lim> >>>>> fc [-e ename] [-lnr] [first] [last] o> umask [-p] [-S] [mode] >>>>> fg [job_spec] unalias [-a] name [name = ...] >>>>> for NAME [in WORDS ... ] ; do COMMAND> unset [-f] [-v] [-n] = [name ...] >>>>> for (( exp1; exp2; exp3 )); do COMMAN> until COMMANDS; do = COMMANDS; done >>>>> function name { COMMANDS ; } or name > variables - Names and = meanings of so> >>>>> getopts optstring name [arg] wait [-n] [id ...] >>>>> hash [-lr] [-p pathname] [-dt] [name > while COMMANDS; do = COMMANDS; done >>>>> help [-dms] [pattern ...] { COMMANDS ; } >>>>>=20 >>>>> In this model, no command is executed until the here identifier is = read, and another shell is spawned to execute all commands. Only one = line at a time can be edited. >>>>>=20 >>>>> To enable the spread of this quite obscure (as far as I know) way = to execute BASH, I am attaching the draft exception I mentioned earlier = in this message. (I hereby transfer copyright over the same to the Free = Software Foundation.) >>>>>=20 >>>>> If one wants to save the typed program so it can be executed again = later, he should use cat <<'EOF' >input.sh | bash instead, where = =E2=80=9Cinput.sh=E2=80=9D is the name of the output file. (The file = will be overwritten without warning if it already exists.) >>>>>=20 >>>>> <type-in-exception.txt> >>>>>=20 >>>>> I thank you for your efforts, and I encourage you to spread the = news about this to Linux Format and other GNU/Linux-related magazines, = and to individual programmers, so they can publish Bourne Again Shell = programs for execution in this way. >>>>>=20 >>>>> Sincerely, >>>>>=20 >>>>> Ryan Cunningham >>>=20 >>=20 >=20 - --Apple-Mail=_0FFE68EB-40A8-4B26-B362-C6D78F1EEECE Content-Type: multipart/mixed; boundary="Apple-Mail=_51A7C042-5A82-40D5-B8FA-5586341517FA" - --Apple-Mail=_51A7C042-5A82-40D5-B8FA-5586341517FA Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html = charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; = - -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" = class=3D""><font face=3D"DejaVu Sans" class=3D"">Another minor = correction. This should be my last correction before your team=E2=80=99s = discussion on what corrections it makes.</font><div class=3D""><font = face=3D"DejaVu Sans" class=3D""><br class=3D""></font></div><div = class=3D""><font face=3D"DejaVu Sans" = class=3D""></font></div></body></html>= - --Apple-Mail=_51A7C042-5A82-40D5-B8FA-5586341517FA Content-Disposition: attachment; filename=type-in-addendum.txt Content-Type: text/plain; name="type-in-addendum.txt" Content-Transfer-Encoding: quoted-printable GNU GENERAL PUBLIC LICENSE TYPE-IN PROGRAM ADDENDUM Version 1, 24 January 2015 Copyright (C) 2015 The Free Software Foundation, Inc. = <http://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license addendum, but changing it is not allowed. (Note: Several conveniences have been made in this Addendum for people without access to the Internet for downloading supplementary dependency programs.) 0. Definitions. "This Addendum" means version 1 of the Type-In Program Addendum to the = GNU General Public License. "The License" means version 3 or later of the GNU General Public = License. A "Program" is any copyrightable work licensed under the License. = "You" are one of the licensees of that Program. The "licensees" and "recipients" may be = individuals or organizations. A "type-in program" is a program distributed by means of printed code = in binary form or in a compiled programming language, through the purchase of a hard copy = of either said code (standalone) or an aggregate containing the same and other = programs, at a brick-and- mortar marketplace, through an e-commerce Web site, or by making a = request by either postal mail or a telephone call. To "propagate" a type-in program means to enable it for such a = purchase. An "aggregate" is a compilation of a covered work (as defined in the = License), with other separate and independent works, which are not by their nature = extensions of the covered work, and which are not combined with it such as to form a = larger program, in or on a volume of a storage or distribution medium, provided the = compilation and its resulting copyright are not used to limit the access or legal rights of = the compilation's users beyond what the individual works permit. As is the case in the = License, inclusion of a covered work in an aggregate does not cause this Addendum to apply = to the other parts of the aggregate, except for those parts that are themselves = covered works at the discretion of the authors thereof. Books and magazine issues containing = type-in programs are included in this definition. "He", "him", and "his", unless otherwise noted, also mean "she" and = "her". All other definitions that apply to and in this Addendum are in = section 0 of the License. 1. Restrictions on Support, Warranty Protection, and Distribution for = a Price. Copies of Programs conveyed under this Addendum may not be coupled in = any way with support or warranty protection not provided without charge; nor may the = Programs themselves, when conveyed in aggregates, be supplied for any cost other = than the cost of distribution of the rest of the aggregate. 2. Restrictions on Conveying Non-Source Forms. Where the object code is conveyed in the form of a type-in program, = the object code must accompany either a program designed for the purpose of assisting a = user in typing said code in the form in which it is presented, or a URL at which a user = can download, and a mailing address and phone number through which a user can request, = such a program. System Libraries or other dependent programs required by a type-in = program must be indicated by name in the article accompanying the type-in program, with = a URL where users can download, and a mailing address and phone number through which users = can request, the source code archives thereof. If a covered type-in program depends on = another covered type-in program, such a program's code must be referenced, either by = cross-reference or by external reference, in the article accompanying the program that so = depends. 3. Additional Restrictions. A person to whom the Program is conveyed, and who distributes a = modified version of the Program, may also require the simultaneous publication of further = derivatives thereof as type-in programs in addition to propagation through any other means the = propagators of his modified version desire to invoke, except if his modified version = is, in his belief, too large to be propagated on paper. 4. Additional Method of Ancillary Propagation that Does Not Require = Acceptance on the Recipient's End. Ancillary propagation of a covered work also does not require = acceptance of the terms of the License by the recipient of the same work when said work was = transmitted as a type-in program. 5. No Patented Components Allowed. The terms of the License with regard to patents do not apply if the = Program is a type- in program; covered type-in programs may not contain or depend on = patents or patented components. END OF TERMS AND CONDITIONS How to Apply These Terms to Your Own Programs Each program on which this Addendum is invoked shall instead bear the = following license notice: <one line to give the program's name and a brief idea of what it = does.> Copyright (C) <year> <name of author> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The terms of version 1 of the Type-In Program Addendum to the GNU General Public License also apply to this program. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see = <http://www.gnu.org/licenses/>, or write to the Free Software Foundation, Inc., 51 Franklin St., Fl. 5, Boston, MA 02110-1305, USA. When a different version of the License is to be used, the License = version number (here "3") may be replaced with the number of that version. Aggregate distributors are also eligible to receive copyright = disclaimers made under the unnumbered section of the License given the same title as this = section of the Addendum. Any program licensed under this Addendum can, as an exception to the = section of the License given the same title as this section of the Addendum, be = incorporated into a proprietary integrated development environment as example source code. - --Apple-Mail=_51A7C042-5A82-40D5-B8FA-5586341517FA Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"Content-Type" content=3D"text/html = charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; = - -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" = class=3D""><div class=3D""><font face=3D"DejaVu Sans" = class=3D""></font></div><div class=3D""><font face=3D"DejaVu Sans" = class=3D""><br class=3D""></font><div><blockquote type=3D"cite" = class=3D""><div class=3D"">On Jan 25, 2015, at 9:32 AM, Ryan Cunningham = <<a href=3D"mailto:rvskmbr...@gmail.com" = class=3D"">rvskmbr...@gmail.com</a>> wrote:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><meta = http-equiv=3D"Content-Type" content=3D"text/html charset=3Dus-ascii" = class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: = space; -webkit-line-break: after-white-space;" class=3D""><font = face=3D"DejaVu Sans" class=3D"">I have some minor corrections: This = addendum (as it is now labeled) now also requires publishers to supply = both a URL at which users can download <i class=3D"">and</i> a = mailing address or phone number through which users can request programs = designed to assist users in typing type-in programs published in object = code form, as opposed to only requiring publishers to supply either such = a URL or such a mailing address or phone number.</font><div = class=3D""><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font></div><div class=3D""><font face=3D"DejaVu Sans" = class=3D""></font></div></div><span = id=3D"cid:F332982E-1BD6-4374-A355-FD3222C4F0D5@hsd1.wa.comcast.net."><t= ype-in-addendum.txt></span><meta http-equiv=3D"Content-Type" = content=3D"text/html charset=3Dutf-8" class=3D""><div style=3D"word-wrap: = break-word; -webkit-nbsp-mode: space; -webkit-line-break: = after-white-space;" class=3D""><div class=3D""><font face=3D"DejaVu = Sans" class=3D""><br class=3D""></font><div class=3D""><font = face=3D"DejaVu Sans" class=3D""><br class=3D""></font><div = class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On Jan = 24, 2015, at 9:12 PM, Ryan Cunningham <<a = href=3D"mailto:rvskmbr...@gmail.com" = class=3D"">rvskmbr...@gmail.com</a>> wrote:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><meta = http-equiv=3D"Content-Type" content=3D"text/html charset=3Dutf-8" = class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: = space; -webkit-line-break: after-white-space;" class=3D""><font = face=3D"DejaVu Sans" class=3D"">I correct the hyphenation of = =E2=80=9Cbrick-and-mortar=E2=80=9D in the definition of a =E2=80=9Ctype-in= program=E2=80=9D.</font><div class=3D""><font face=3D"DejaVu Sans" = class=3D""><br class=3D""></font></div><div class=3D""><font = face=3D"DejaVu Sans" class=3D""></font></div></div><span = id=3D"cid:9ED32848-6881-4EE7-B58A-8510DA65B80D@hsd1.wa.comcast.net." = class=3D""><type-in-exception.txt></span><meta = http-equiv=3D"Content-Type" content=3D"text/html charset=3Dutf-8" = class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: = space; -webkit-line-break: after-white-space;" class=3D""><div = class=3D""><font face=3D"DejaVu Sans" class=3D""></font></div><div = class=3D""><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font><div class=3D""><blockquote type=3D"cite" = class=3D""><div class=3D"">On Jan 24, 2015, at 9:10 PM, Ryan Cunningham = <<a href=3D"mailto:rvskmbr...@gmail.com" = class=3D"">rvskmbr...@gmail.com</a>> wrote:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><meta = http-equiv=3D"Content-Type" content=3D"text/html charset=3Dus-ascii" = class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: = space; -webkit-line-break: after-white-space;" class=3D""><font = face=3D"DejaVu Sans" class=3D"">Yet another unnecessary word is removed = in the same definition.</font><div class=3D""><font face=3D"DejaVu Sans" = class=3D""><br class=3D""></font></div><div class=3D""><font = face=3D"DejaVu Sans" class=3D""></font></div></div><span = id=3D"cid:F1CCEAEA-A506-444F-BCAF-ECD062A3FF45@hsd1.wa.comcast.net." = class=3D""><type-in-exception.txt></span><meta = http-equiv=3D"Content-Type" content=3D"text/html charset=3Dutf-8" = class=3D""><div style=3D"word-wrap: break-word; -webkit-nbsp-mode: = space; -webkit-line-break: after-white-space;" class=3D""><div = class=3D""><font face=3D"DejaVu Sans" class=3D""></font></div><div = class=3D""><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font><div class=3D""><div class=3D""><blockquote = type=3D"cite" class=3D""><div class=3D"">On Jan 24, 2015, at 9:06 PM, = Ryan Cunningham <<a href=3D"mailto:rvskmbr...@gmail.com" = class=3D"">rvskmbr...@gmail.com</a>> wrote:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><font face=3D"DejaVu = Sans" class=3D"" style=3D"font-size: 12px; font-style: normal; = font-variant: normal; font-weight: normal; letter-spacing: normal; = line-height: normal; orphans: auto; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; widows: auto; word-spacing: = 0px; -webkit-text-stroke-width: 0px;">I attach a new draft of the = Type-In Program Exception, which merely fixes a grammar error by = removing an unnecessary word in the definition of = an =E2=80=9Caggregate=E2=80=9D.</font><div class=3D"" = style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; = font-variant: normal; font-weight: normal; letter-spacing: normal; = line-height: normal; orphans: auto; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; widows: auto; word-spacing: = 0px; -webkit-text-stroke-width: 0px;"><font face=3D"DejaVu Sans" = class=3D""><br class=3D""></font></div><div class=3D"" = style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; = font-variant: normal; font-weight: normal; letter-spacing: normal; = line-height: normal; orphans: auto; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; widows: auto; word-spacing: = 0px; -webkit-text-stroke-width: 0px;"><font face=3D"DejaVu Sans" = class=3D""></font></div><span = id=3D"cid:D9426167-57EE-47E8-BC06-6171C47FBBF0@hsd1.wa.comcast.net." = class=3D""><type-in-exception.txt></span><div class=3D"" = style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; = font-variant: normal; font-weight: normal; letter-spacing: normal; = line-height: normal; orphans: auto; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; widows: auto; word-spacing: = 0px; -webkit-text-stroke-width: 0px;"><font face=3D"DejaVu Sans" = class=3D""></font></div><div class=3D"" style=3D"font-family: Helvetica; = font-size: 12px; font-style: normal; font-variant: normal; font-weight: = normal; letter-spacing: normal; line-height: normal; orphans: auto; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: = 0px;"><font face=3D"DejaVu Sans" class=3D""><br class=3D""></font><div = class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On Jan = 24, 2015, at 8:56 PM, Ryan Cunningham <<a = href=3D"mailto:rvskmbr...@gmail.com" = class=3D"">rvskmbr...@gmail.com</a>> wrote:</div><br = class=3D"Apple-interchange-newline"><div class=3D""><div class=3D"" = style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; = - -webkit-line-break: after-white-space;"><div class=3D""><font = face=3D"DejaVu Sans" class=3D"">Dear Mr. Stallman,</font></div><div = class=3D""><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font></div><div class=3D""><font face=3D"DejaVu Sans" = class=3D"">I am Ryan Cunningham, a high school sophomore and computer = enthusiast with autism spectrum disorder (ASD). I am simply enthused by = the idea of free and open-source software.</font></div><div = class=3D""><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font></div><font face=3D"DejaVu Sans" class=3D"">I would = like to tell you that, while writing a draft Type-In Program Exception = to the GNU GPL, I=E2=80=99ve made an interesting discovery: Sending a = here-document to BASH (of course from a shell that supports = here-documents) can actually enable BASH to execute the same kind of = type-in program you=E2=80=99d see in the =E2=80=9980s! (Only it=E2=80=99s = in BASH=E2=80=99s language, not BASIC; by the way, this is not a = bug.)<br class=3D""></font><div class=3D""><font face=3D"DejaVu Sans" = class=3D""><br class=3D""></font></div><div class=3D""><font = face=3D"DejaVu Sans" class=3D"">A transcript of an example shell session = proving the same is attached below.</font></div><div class=3D""><font = face=3D"DejaVu Sans" class=3D""><br class=3D""></font></div><div = class=3D""><div class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu = Sans Mono" class=3D"">$<span = class=3D"Apple-converted-space"> </span><b class=3D"">bash = <<'EOF'</b></font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">><span = class=3D"Apple-converted-space"> </span><b = class=3D"">date</b></font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">><span = class=3D"Apple-converted-space"> </span><b = class=3D"">help</b></font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">><span = class=3D"Apple-converted-space"> </span><b = class=3D"">EOF</b></font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">Sat Jan 24 20:35:21 PST = 2015</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D"">GNU bash, version 4.3.30(2)-release = (x86_64-apple-darwin14.0.0)</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">These shell commands = are defined internally. Type `help' to see this = list.</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D"">Type `help name' to find out more = about the function `name'.</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">Use `info bash' to find = out more about the shell in general.</font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" class=3D"">Use = `man -k' or `info' to find out more about commands not in this = list.</font></div><div class=3D"" style=3D"margin: 0px; min-height: = 13px;"><font face=3D"DejaVu Sans Mono" class=3D""><br = class=3D""></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D"">A star (*) next to a name means = that the command is disabled.</font></div><div class=3D"" style=3D"margin:= 0px; min-height: 13px;"><font face=3D"DejaVu Sans Mono" class=3D""><br = class=3D""></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> job_spec [&] = = history [-c] [-d offset] [n] or hist></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> (( expression )) = if COMMANDS; then = COMMANDS; [ elif C></font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> . filename = [arguments] = jobs [-lnprs] [jobspec ...] or jobs ></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> : = = kill [-s sigspec | -n signum | -sigs></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> [ arg... ] = let arg = [arg ...]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> [[ expression ]] = = local [option] name[=3Dvalue] ...</font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> alias [-p] [name[=3Dvalue] ... ] = logout [n]</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> bg [job_spec ...] = = mapfile [-n count] [-O origin] [-s c></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> bind [-lpsvPSVX] [-m keymap] [-f file> popd = [-n] [+N | -N]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> break [n] = = printf [-v var] format [arguments]</font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> builtin [shell-builtin [arg ...]] = pushd [-n] [+N | -N | dir]</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> caller [expr] = = pwd [-LP]</font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> case WORD in [PATTERN [| PATTERN]...)> read = [-ers] [-a array] [-d delim] [-></font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> cd= [-L|[-P [-e]] [-@]] [dir] = readarray [-n count] [-O origin] [-s></font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> command [-pVv] command [arg ...] = readonly [-aAf] [name[=3Dvalue] ...] o></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> compgen [-abcdefgjksuv] [-o option] > = return [n]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> complete [-abcdefgjksuv] = [-pr] [-DE] > select NAME [in WORDS ... ;] do = COMM></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> compopt [-o|+o option] [-DE] = [name ..> set [-abefhkmnptuvxBCHP] [-o = option-></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> continue [n] = = shift [n]</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> coproc [NAME] = command [redirections] shopt [-pqsu] [-o] [optname = ...]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> declare [-aAfFgilnrtux] [-p] = [name[=3Dv> source filename [arguments]</font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> dirs [-clpv] [+N] [-N] = suspend [-f]</font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> disown [-h] [-ar] [jobspec ...] = test [expr]</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> echo [-neE] [arg = ...] time = [-p] pipeline</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> enable [-a] [-dnps] [-f = filename] [na> times</font></div><div class=3D"" style=3D"margin:= 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> eval [arg = ...] = trap [-lp] [[arg] signal_spec = ...]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> exec [-cl] [-a name] [command = [argume> true</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> exit [n] = = type [-afptP] name [name = ...]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> export [-fn] [name[=3Dvalue] = ...] or ex> typeset [-aAfFgilrtux] [-p] = name[=3Dva></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> false = = ulimit [-SHabcdefilmnpqrstuvxT] = [lim></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> fc [-e ename] [-lnr] [first] = [last] o> umask [-p] [-S] [mode]</font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> fg= [job_spec] = unalias [-a] name [name = ...]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> for NAME [in WORDS ... ] ; do = COMMAND> unset [-f] [-v] [-n] [name ...]</font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans Mono" = class=3D""> for (( exp1; exp2; exp3 )); do COMMAN> until = COMMANDS; do COMMANDS; done</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans Mono" class=3D""> function name { = COMMANDS ; } or name > variables - Names and meanings of = so></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> getopts optstring name = [arg] wait [-n] [id = ...]</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> hash [-lr] [-p pathname] = [-dt] [name > while COMMANDS; do COMMANDS; = done</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans Mono" class=3D""> help [-dms] [pattern ...] = { COMMANDS ; = }</font></div></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans" class=3D""><br class=3D""></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans" class=3D"">In= this model, no command is executed until the here identifier is read, = and another shell is spawned to execute all commands.<span = class=3D"Apple-converted-space"> </span><b class=3D"">Only one line = at a time can be edited.</b></font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans" class=3D"">To enable the spread of this quite = obscure (as far as I know) way to execute BASH, I am attaching the draft = exception I mentioned earlier in this message. (I hereby transfer = copyright over the same to the Free Software = Foundation.)</font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans" class=3D""><br class=3D""></font></div><div = class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu Sans" class=3D"">If= one wants to save the typed program so it can be executed again later, = he should use </font><font face=3D"DejaVu Sans Mono" class=3D""><b = class=3D"">cat <<'EOF' >input.sh | bash</b></font><font = face=3D"DejaVu Sans" class=3D""><span = class=3D"Apple-converted-space"> </span>instead, = where =E2=80=9Cinput.sh=E2=80=9D is the name of the output = file.<span class=3D"Apple-converted-space"> </span><b class=3D"">(The= file will be overwritten without warning if it already = exists.)</b></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans" class=3D""><b class=3D""><br = class=3D""></b></font></div><div class=3D"" style=3D"margin: = 0px;"></div></div><span = id=3D"cid:83ECD2E0-FDC2-4C23-A600-C60218A0EF62@hsd1.wa.comcast.net." = class=3D""><type-in-exception.txt></span><div class=3D"" = style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; = - -webkit-line-break: after-white-space;"><div class=3D"" style=3D"margin: = 0px;"></div><div class=3D"" style=3D"margin: 0px;"><font face=3D"DejaVu = Sans" class=3D""><br class=3D""></font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans" class=3D"">I thank you = for your efforts, and I encourage you to spread the news about this = to<span class=3D"Apple-converted-space"> </span><i class=3D"">Linux = Format</i> and other GNU/Linux-related magazines, and to individual = programmers, so they can publish Bourne Again Shell programs for = execution in this way.</font></div><div class=3D"" style=3D"margin: = 0px;"><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans" class=3D"">Sincerely,</font></div><div class=3D"" = style=3D"margin: 0px;"><font face=3D"DejaVu Sans" class=3D""><br = class=3D""></font></div><div class=3D"" style=3D"margin: 0px;"><font = face=3D"DejaVu Sans" class=3D"">Ryan = Cunningham</font></div></div></div></blockquote></div></div></div></blockq= uote></div><br class=3D""></div></div></div></div></blockquote></div><br = class=3D""></div></div></div></blockquote></div><br = class=3D""></div></div></div></div></blockquote></div><br = class=3D""></div></body></html>= - --Apple-Mail=_51A7C042-5A82-40D5-B8FA-5586341517FA-- - --Apple-Mail=_0FFE68EB-40A8-4B26-B362-C6D78F1EEECE-- ------- End of forwarded message ------- -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use Ekiga or an ordinary phone call.