From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HTML_MESSAGE,MAILING_LIST_MULTI,MIME_QP_LONG_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 17644 invoked from network); 30 Jan 2023 16:32:22 -0000 Received: from minnie.tuhs.org (50.116.15.146) by inbox.vuxu.org with ESMTPUTF8; 30 Jan 2023 16:32:22 -0000 Received: from minnie.tuhs.org (localhost [IPv6:::1]) by minnie.tuhs.org (Postfix) with ESMTP id 6B426425FE; Tue, 31 Jan 2023 02:31:58 +1000 (AEST) Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by minnie.tuhs.org (Postfix) with ESMTPS id 2CC46425F8 for ; Tue, 31 Jan 2023 02:31:54 +1000 (AEST) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 738E45C0070 for ; Mon, 30 Jan 2023 11:31:53 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Mon, 30 Jan 2023 11:31:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ronnatalie.com; h=cc:content-type:date:date:from:from:in-reply-to:message-id :mime-version:reply-to:reply-to:sender:subject:subject:to:to; s= fm2; t=1675096313; x=1675182713; bh=irCi/IDtcg18Z77wKLKDMctzp+DE l0Ta65pe3kHpEM8=; b=Xlor3ZPr76yvPY3DMNbhnWNmD9b/Ocs28QBdjnfivB8u QuOe3FnmUtvKOO7bMPHR88jHgp+/M/BKNkjgf/bW6fv+rOYNQXdJZdQmiQOCIQcH 6GYG4/Ep5ZCUhk/pqqFDYYYkLCwWr40pOXRuISqiIzZIsjg59z25xcUOExua1yMA fEWu/YKgiZJF0mv2RADfqtBktzFcV0izpoMpzB91jnKG43834Fqr1J0xEw77e3w9 MrjM+UWauKdWoZeYhbtvr04DtdvW3vNaTCkNYqwQ0/PY8s2MNCpstAwHgtwl+AKw ZY6UI0VnoX2Fwa5NNjkhNIZ9/TVivvYzt35UHulWJA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1675096313; x=1675182713; bh=irCi/IDtcg18Z77wKLKDMctzp+DEl0Ta65p e3kHpEM8=; b=oimuaMLiTGlArKybgG8ThI5GTR4SEKhtQJeDqbygZKZ7A+XtnbJ Kh6VKYQW3fSUY5ytQG4kBqGhY4qPhXvvrfzi9jhvgvm9A23ay/LTKRFybT8dZ0UD /eMi9PfskzH+ELZCp+y6QCnqCzv42hokF2jvXkksXy7SGu0bt9Ntf/m2z7tQGzeO aHAJu7KyxLjFiEUNyIyDsV1RyS6ifCBYwRUEVvj0F20eqVkPcpXalJ3Lam4Jafu/ hcbwrlcKv1/2BlVvU/Td416WSLCDB0Ft+vXCVfzpb5wycVsupZS/w5WtqLGDkepb PvgXHnsCRd+8gQY9kyNkL87AUYQwMXcwZ3w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudefvddgleduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefhvffufffkrhgfgggtsegrtderre dtreejnecuhfhrohhmpedftfhonhcupfgrthgrlhhivgdfuceorhhonhesrhhonhhnrght rghlihgvrdgtohhmqeenucggtffrrghtthgvrhhnpedvjeekuefghedugfdvudfgtedtje dvvddthefhgedvvdduteetledtteekkedtjeenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpehrohhnsehrohhnnhgrthgrlhhivgdrtghomh X-ME-Proxy: Feedback-ID: iaba146ad:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 30 Jan 2023 11:31:53 -0500 (EST) From: "Ron Natalie" To: "The Eunuchs Hysterical Society" Date: Mon, 30 Jan 2023 16:31:52 +0000 Message-Id: User-Agent: eM_Client/9.2.1222.0 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="------=_MBC8002BFE-2F5B-4476-9AF7-28987DDF2185" Message-ID-Hash: L6YV554T3DNXIKKUPKX2UFC473TT7B6E X-Message-ID-Hash: L6YV554T3DNXIKKUPKX2UFC473TT7B6E X-MailFrom: ron@ronnatalie.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tuhs.tuhs.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.6b1 Precedence: list Reply-To: Ron Natalie Subject: [TUHS] Job Control and other terminal fun List-Id: The Unix Heritage Society mailing list Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --------=_MBC8002BFE-2F5B-4476-9AF7-28987DDF2185 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable A lot of this dates back from the old =E2=80=9Ctty=E2=80=9D days (or at lea= st crt=20 terminals that were still alphanumeric). Even the concept of putting=20 a job in the background with & is really a feature of trying to=20 multiplex multiple tasks on the same dumb terminal. This is indeed=20 less important with windowing things like the DMDs or modern windowing=20 workstatiosn when you can just get another window. The Berkeley job=20 control was an interesting hack. For us at BRL the problem was I=20 absolutely detested the C shell syntax. The Korn shell hadn=E2=80=99t esc= aped=20 from AT&T yet, so, I spent time figuring out how that really worked in=20 the C shell (not really well documented), mostly by inspection, and then=20 reimplemented it in the Bourne Shell (we were using the System V source=20 code version for that). I still couldn=E2=80=99t get traction at BRL for= =20 using the Bourne shell because by that time, tcsh had come out with=20 command line editing. So back to the shell sources I went. By this=20 time, 5R2 had come out so I grabbed the shell source form that. I was=20 very delighted to find that the macros that made C look sorta like Algol=20 had been unwound and the thing was back to straight C. I reworked=20 emacs-ish command line editing into the shell. Subsequently, I had a=20 nice conversation with David Korn at USENIX, being probably at that=20 point the two most familiar with Bourne shell job control internals. I=20 also sat down with the guys writing either bash or the pdksh (can=E2=80=99t= =20 remember which) and explained all how this work. As a result my name=20 ended up in the Linux manpages which was pretty much all I found for a=20 while when I googled myself. Years later, I had left the BRL, spent three years as a Rutgers=20 administrator and was working for a small startup in Virginia. There=20 was a MIPS workstation there. I was slogging along using ed (my=20 employees always were amazed that if there was no emacs on the system, I=20 just used ed, having never learned vi). Not thinking about it, I=20 attempted to retrieve a backgrounded job by typing =E2=80=9Cfg.=E2=80=9D = To my=20 surprise the shell printed =E2=80=9CJob control not enabled.=E2=80=9D Hmm= , I say. =20 That sounds like my error message. =E2=80=9Cset -J=E2=80=9D I type. =E2= =80=9CJob control=20 enabled.=E2=80=9D Hey! This is my shell. Turns out Doug Gwyn put my mo= ds=20 into his =E2=80=9CSystem V on BSD=E2=80=9D distribution tape and it had mad= e its way=20 into the Mach code base and so every Mach-derived system ended up with=20 it. Certainly, I found it convenient. There have been other schemes other than job control to multiplex=20 terminals. IBM in the AIX that ran on the 370/PS2/i860 had a device=20 called the High Function Terminal that allowed you to swap screens on=20 the console. When we implemented the i860 (which was an add in card=20 for the micro channel), we called our console the Low Function Terminal. Then after spending some time on MIT=E2=80=99s ITS and TOPS20, I got intrig= ued=20 by the fact on those systems you could have a =E2=80=9Cshell=E2=80=9D that= persisted=20 across logins and could be detached and reattached on another device at=20 another time. I set about making such an implementation. Not=20 particularly efficient, it essentially grabbed one of the BSD ptys and=20 spawned the shell there and then a small alternative login shell=20 forwarded the real tty to that. You could then detach it leaving the=20 shell running on the PTY and reattach it elsewhere. Much like ITS,=20 on. login it reminded you that you had a detached shell running and=20 offered to reattach it rather than spawning a new one (complete with the=20 ITS-ish: space for yes, rubout for no). It never really caught on. Oh well, pardon my ramblings. -Ron --------=_MBC8002BFE-2F5B-4476-9AF7-28987DDF2185 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable =0A=0A=0A=0AA lot of= this dates back from the old =E2=80=9Ctty=E2=80=9D days (or at least crt te= rminals that were still alphanumeric). =C2=A0 =C2=A0Even the concept of put= ting a job in the background with & is really a feature of trying to mu= ltiplex multiple tasks on the same dumb terminal. =C2=A0 This is indeed les= s important with windowing things like the DMDs or modern windowing worksta= tiosn when you can just get another window. =C2=A0 =C2=A0The Berkeley job c= ontrol was an interesting hack. =C2=A0 For us at BRL the problem was I abso= lutely detested the C shell syntax. =C2=A0 The Korn shell hadn=E2=80=99t es= caped from AT&T yet, =C2=A0so, I spent time figuring out how that reall= y worked in the C shell (not really well documented), mostly by inspection, = and then reimplemented it in the Bourne Shell (we were using the System V= source code version for that). =C2=A0 =C2=A0I still couldn=E2=80=99t get tr= action at BRL for using the Bourne shell because by that time, tcsh had com= e out with command line editing. =C2=A0 So back to the shell sources I went= . =C2=A0 By this time, 5R2 had come out so I grabbed the shell source form= that. =C2=A0 I was very delighted to find that the macros that made C look= sorta like Algol had been unwound and the thing was back to straight C. =C2= =A0 I reworked emacs-ish command line editing into the shell. =C2=A0 Subseq= uently, I had a nice conversation with David Korn at USENIX, being probably = at that point the two most familiar with Bourne shell job control internal= s.=C2=A0I also sat down with the guys writing either bash or the pdks= h (can=E2=80=99t remember which) and explained all how this work. =C2=A0As= a result my name ended up in the Linux manpages which was pretty much all I = found for a while when I googled myself.

Years later, I had left the BRL, spent three years as a Rutgers adm= inistrator and was working for a small startup in Virginia. =C2=A0 There wa= s a MIPS workstation there. =C2=A0 =C2=A0I was slogging along using ed (my= employees always were amazed that if there was no emacs on the system, I ju= st used ed, having never learned vi). =C2=A0 Not thinking about it, I attem= pted to retrieve a backgrounded job by typing =E2=80=9Cfg.=E2=80=9D =C2=A0= To my surprise the shell printed =E2=80=9CJob control not enabled.=E2=80=9D = =C2=A0 Hmm, I say. =C2=A0That sounds like my error message. =C2=A0 =E2=80= =9Cset -J=E2=80=9D I type. =C2=A0 =E2=80=9CJob control enabled.=E2=80=9D= =C2=A0 Hey! This is my shell. =C2=A0 =C2=A0Turns out Doug Gwyn put my mods in= to his =E2=80=9CSystem V on BSD=E2=80=9D distribution tape and it had made= its way into the Mach code base and so every Mach-derived system ended up w= ith it. =C2=A0 Certainly, I found it convenient.

There have been other schemes other than job control to multiplex terminal= s. =C2=A0 =C2=A0IBM in the AIX that ran on the 370/PS2/i860 had a device ca= lled the High Function Terminal that allowed you to swap screens on the con= sole. =C2=A0 When we implemented the i860 (which was an add in card for the = micro channel), we called our console the Low Function Terminal.

Then after spending some time on MIT=E2=80=99s ITS and TO= PS20, I got intrigued by the fact on those systems you could have a =E2=80= =9Cshell=E2=80=9D that persisted across logins and could be detached and re= attached on another device at another time. =C2=A0 =C2=A0I set about making = such an implementation. =C2=A0 =C2=A0Not particularly efficient, it essent= ially grabbed one of the BSD ptys and spawned the shell there and then a sm= all alternative login shell forwarded the real tty to that. =C2=A0 =C2=A0Yo= u could then detach it leaving the shell running on the PTY and reattach it = elsewhere. =C2=A0 =C2=A0Much like ITS, on. login it reminded you that you= had a detached shell running and offered to reattach it rather than spawnin= g a new one (complete with the ITS-ish: space for yes, rubout for no). =C2= =A0 It never really caught on.

Oh well, pardon m= y ramblings.

-Ron

<= /html> --------=_MBC8002BFE-2F5B-4476-9AF7-28987DDF2185--