Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Technology

The Origin Of The Shell 61

davecb writes: "Louis Pouzin, the inventor of datagrams, just contributed an article to Multicians.org on the creation of the first shell, "runcom," on CTSS and later Multics." Multicians is one of the coolest sites I've seen -- if you think the odd Atari 2600 is retro, look out. They also provided information on the Multics scheduler a little while ago.
This discussion has been archived. No new comments can be posted.

The Origin Of The Shell

Comments Filter:
  • From runcom to unix to DOS to Linux to the Quake console. What a long, strange trip it's been.
  • Accorting to Ken, its "a week pun on multics". It was developed initialy, just after Bell Labs pulled out ot the multics project, and KT purposly did some things differently then multics.

    The pun is that its phoeniticly simmilar to eunich [m-w.com].

  • I used to develop for Cray systems that ran an operating system CTSS (see here [qrc.com] ) , but I thought it stood for Cray Time Sharing System. Is this the same as the Compatible Time Sharing System?

  • by mihalis ( 28146 ) on Wednesday November 29, 2000 @10:07AM (#593877) Homepage

    It is a pretty good title, perhaps I'm just being a little too literal. It wouldn't be the first time. I still laugh when I remember his analogy of operating systems as car salesmen - the bit that was something like :

    Linux Guy : Our free tank does 200 mph whilst never needing gas. When it breaks we will come to your house to fix it.

    Joe consumer : Stay away from my house you freak.

  • by TarPitt ( 217247 ) on Wednesday November 29, 2000 @11:25AM (#593878)
    What exactly were the mechanics of executing runcom? Were they batch files edited on-line or punched card decks, in which case the innovation was a parse-able command language? Or did they actually use on-line terminals or some sort (old teletype ASR33s?), in which case the innovation is more radical, as it would allow for a command-based human/computer interaction? Also, was the MIT CTSS system where the original BASIC programming language was developed?
  • Out of curiosity, are how does something like the Apple ][ DOS 3.3 figure into the shell world? It's not really a shell in the same way that bash or csh are since there's no specific scripting associated with them, and only a small set of actual commands. The Applesoft interpreter fits the scripting language, but its seperate from DOS -- ie, you could run without the other.

  • Nah, it wasnt built by Dr. Charles Forbin [128.174.194.59].
  • I found a shell on the beach once..
  • I did my part. At CMU in OS we worked on Yalnix, because "Y'All" is the plural or "You" and thus better. You can think of that as "Multi-nix" if you want, we just abbriviated it in to hick.

    Then there was microYalnix but that was a different story.

    Currently I'm working on a system that is named Hannibal because Hannibal is a cannibal and he eats people. I'm more concerned about a cannibal computer turning bad than one called multi-something.

    How do you spell abriviated? That doesn't look right.

  • by davecb ( 6526 )
    That's a modern translation. We always used to say short for "run commands", where "run" was in the mainframe-batch senee of "a run of the program". --dave
  • Same book [fatbrain.com] available from fatbrain.

    Same book for less money [barnesandnoble.com] at Barnes and Noble.

    I must say I'm a little surprised to see such an obvious shill for amazon.com on /. -- especially since their price of $29.95 bites, compared the BN price of $22.75. For $30 you can this book from any number of other online book retailers.
  • by Anonymous Coward

    Chiil out man, you will get the +1 bonus one day, then you will get so bored with karma whoring that trolling becomes more interesting. The moderator points will come so often as to get pointlessly boring.

    One thing is true: get rid of that sig and you will get +1 twice as fast.

    and if you really hate the mods go metamoderate for a while.

  • DTSS? CTSS? At least I was 3/4 correct!
  • Though of course Microsoft would have you believe that in the beginning was the Word...
  • by kps ( 43692 )

    Neat.

    On MIT's famed ITS (Incompatible Timesharing System), the command processor -- the analogue of the shell -- was the debugger, just enhanced with a few extra commands for logging in and such. Perhaps some slumming exITSer can explain further.

    Currently, Sun's Solaris debugger command language is a ksh superset. I suppose you could use it as your login shell.

  • I do not know if it is the same CTSS, but there was some misegenation involving a Cray and a DPS8 running Multics back in the 1980's.

    The half-breed used Multics security and Cray processing speed for some weird, and possibly classified applications at a site or two not revealed to this writer.

    Some interesting things about the Multics shell are:

    Iteration: place a set of tokens in parens, another set of tokens in another pair of parens, and the command would be repeated with the tokens substituted in place:

    ls (a b c) (d e f)

    expands to:

    ls a d;ls b e; ls cf

    Active functions: more sophisticated redirection of command output to the command line.

    Wild Cards Done by comands, not shell: This enables the use of extended syntax, if the command supports it:

    rename *a*.cpp =.fortran

    does exactly what you would expect. Try doing it in sh. I noticed that DOS wildcard handling is more Multics like than Unix like, except multics doesn't have the name limitations found in DOS.

    Until Release 12, it did not do pipes, but it imported them with a vengence. Pipe and file redirection used an overloaded pipe operator, becaus the less-than and greater-than signs were used for directory pathing.

  • Face it, bash is not equivalent to the first shell used in Unix.

    Indeed.

    -r---wxrw- 1 root sys 954 Jan 18 1973 v1/bin/sh
    -rwxr-xr-x 1 root sys 5888 May 14 1975 v6/bin/sh
    -rwxr-xr-x 1 root sys 17310 May 5 1979 v7/bin/sh
    -rwxr-xr-x 1 root sys 563624 Aug 1 1999 /bin/bash

    Another comparison: bash alone, not counting the shared library routines it needs, is bigger than all of the Sixth Edition kernel, /bin, /usr/bin, and /usr/games put together.

    utility=log(size) is a charitable description of bash.

  • Much of the command line interface already exists in the teletype machines. In fact, you talked to computers via teletype machines. Batch processing preceded teletype machines, because the punched card and batch runs were cheaper to lay on then terminals (either glass ttys or the real thing) for most users.

    Think of a computer connected to a tty machine. You have a program looking after the console. It reads input, it runs output.

    • You can build in commands to it.
    • You can endower a simple or complex macro language to it.
    • You can allow it to store output to other devices, or files.
    • You can allow it to gobble up bits of the output as input.
    Sounds like a command shell to me, like 4os2, command.com or csh or bash. These differ in what they can do, how good is their macro language, or the built inservices, but they are much the same otherwise.

    The UI has been around a long time before computers, and guess what? - it works. It even works under a GUI. And, you will find that users would get terribly upset if the pipe or keystrokes from one tty session bled through to another ...

    So yes, in the beginning there was a lonely command line. But the command line needed to talk to a something. At first it phoned up other command lines, and talked to them. So was born the telegram, the telex, and the teletype.

    May years passed, and they needed to talk to computers. Computers could not talk, but they could type, and who better than a telex to talk to. So we started by telexing the computer.

    Telexes were expensive, and most users had to use punched cards. But when the teletype terminals became cheaper, the punched cards disappeared, and so on.

    Terminals became more capable, and one could deal with the terminal as a changing page, rather than a tty session. You could use the screen as a window on a page, and from this, via a long and winding road, we get character based terminal sessions, windows, and finally, the ultimate in perfection for the GUI, the workplace shell ...

  • The timeline mentions a Multics system named "LINUS" which stood for Logical Inquiry and Update System. Around 1984. Hmmm,When was LT born again? Will 2029 see "Professor reports last Linux server finally turned off?"
  • by Christopher B. Brown ( 1267 ) <cbbrowne@gmail.com> on Wednesday November 29, 2000 @01:04PM (#593893) Homepage
    This is just not something Linus Torvalds would be likely to be tremendously interested in; the original point of Linux was to hack around with 80386 addressing modes, and make a "better Minix."

    There is a big difference between "hacking up a better Minix" and creating a Multics clone; in the latter case, there was considerable integration between:

    • The kernel, providing file, computation, and security services.

      Note that the memory model was substantially different from that of Unix. With Unix, you open files and filter data in and out, and allocate memory dynamically on demand, Multics unified this, so that rather than "opening a file," you would instead "initiate a segment," so that all files would essentially be memory mapped into the address spaces of all participating processes.

      Furthermore, whilst the evils of segmentation as seen with the 64k pages on the original "IBM PC" give people the impression that segmentation is evil, Multics made pervasive use of it to keep chunks of memory distinct.

      Note that some of the later Pentium CPUs included segmentation instructions likely based on Multics that could have been used to help do memory management "the Multics way;" the lack of such on RISC (Alpha, IA-64, PPC, MIPS, ...) architectures and the perpetual impending doom of IA-32 means that having memory management in Multics style on "modern" hardware may need to wait another 15 years...

    • Programming Language.

      Multics was coded in PL/1, [uni-muenster.de] and the fairly byzantine complexity of PL/1 provides both the merit that some operations may be much better optimized than C, and the demerit of being pretty complex.

      I just don't think "C hackers" would build Multics.

    • Unix and Linux represent "minimalist" systems in a number of senses, and it seems that many prominent Linux kernel hackers prefer "more minimal" text editors like Vi to the sorts of complex tools like TECO [multicians.org] and Emacs. [multicians.org]
    There has periodically been talk on alt.os.multics [alt.os.multics] of recreating Multics; the problem is that since it tightly integrated together custom hardware, complex kernel, and a pretty sophisticated user space, there's just plain a lot to replicate.

    The only way I'd see it being likely would be if some of the retired Multics creators that made some Silly-Valley and/or DotCom millions decided to sponsor a several-year-long project involving a staff of on the order of a dozen pretty elite developers to provide some sort of "legacy" to retrieve Multics from the dead.

  • My mistake. Looks like that might be claims 6 through 11 of this patent [delphion.com] which essentially covers a video terminal with extra bits for each character to identify fields (though not for display appearance attributes, which were invented later [delphion.com]). But it's not clear to me through the patentese whether this covers a video terminal cursor as such, or just the implementation of a cursor using a cursor attribute bit. Unfortunately the earlier patents it references are not in the IBM database.

  • I was about to merely deflate the above joke by pointing out that when the command line was invented, video terminals didn't exist, and you knew where to type by the position of the carriage or print head on the Teletype, Flexowriter, Selectric, etc. And the cursor (it there was one) was a clear plastic thing with a mark to show where the next character would strike -- the name derived from the similar sliding pointer on a slide rule.

    Then I used my big dic to look up "cursor", and wanted to share what I found: "A part of a mathematical instrument, which slides backwards and forwards. 1594." So the word "cursor", with something reasonably close to its current meaning, is over four centuries old! Make Multics look like a pretty young thing.

  • Yes, thanks for the research and link. It was Stephen Groskey whom I met at B-R in the late '70s. Claim 6 seems to be the one overing the cursor, although you are correct that it isn't completely clear that a visible character is meant here.

  • I thought for a moment, did a bunch of net searches, and said "yeah, why not??" I don't think it would be terribly difficult... didn't Linus say something like that?
  • shalmaneser!
  • The 'rc' designation (as in /etc/rc.d/) comes from an abbreviation of 'runcom'.

    That's funny, according to O'Reilly's "Running Linux", it stands for "resource configuration".


    --

  • Great site! I have this [bell-labs.com](it's not goatsex!) picture from that page taped to the back of my monitor. Folks who stop by to visit look at it rather oddly and with a blank look in their eye. When I tell them what it's about, they just nod and walk away :)
  • by mihalis ( 28146 ) on Wednesday November 29, 2000 @09:03AM (#593902) Homepage

    This is a good debunking of Neal Stephenson's "In the beginning was the command line". In the beginning there was no command line, and when someone invented it, it was as "revolutionary" as graphical user interfaces where when Douglas Englebart invented them. They are certainly not an intrinsic part of any computer as he seems to imply.

    A better title would have been "In the beginning was the sheep". Sheep produce wool, so man invented the loom. Then Jacquard invented the programmable loom. Then Ada Lovelace wrote "punch cards" for it and thus was programming invented.

  • I like that sig too much. At least it's not as vulgar as UID#7608's signature, or for that matter, the body of your post.
  • by RevRigel ( 90335 ) on Wednesday November 29, 2000 @09:05AM (#593904)
    Actually, his title is a bit of misnomer. I don't know why he named it that. If you'd actually read the essay, you'd know that he says that in the beginning was *really* batch processing. In his high school CS class they called up a University mainframe and sent it batch commands and got results back. Only later did they maintain a live connection and enter commands one at a time, ala command line.
  • by theyman ( 13931 ) on Wednesday November 29, 2000 @09:09AM (#593905) Homepage
    rc definition at FOLDOC. [ic.ac.uk]
    I know which I'd rather put money on... :)
  • Wrong. The rc in rc.x and foorc stands for resource (sometimes .rc files are referred to as Resource Configuration files, but usually just resource).

    Not RunCom.

  • According to the site, Multics is short for Multiplexed Information and Computing Service. Does anyone know what, if anything, Unix stands for?

    --
  • two points of criticism. first, the article itself is pretty minimal in the context it provides. it doesn't talk about what went on before or after, nor what was going on at the same time. still some good information, but nothing to get worked up over.
    second, the actual work described wasn't as revolutionary as people here are saying. very good, to be sure, but the really revolutionary stuff came when the idea made its way into other people's hands, and other systems. try to imagine a shell without pipes or even IO redirection. the shell, as it first existed, was mostly an evolution of batch processing. a big improvement, to be sure, but just evolution. the really interesting stuff showed up with the Unix shell, at the hands of Thompson, Ritchie, and a few others.
    see this paper [bell-labs.com] by Dennis Ritchie, particularly the sections on process control, IO redirection, and (most especially) pipes for some really revolutionary developments in the history of the shell.
  • It's the title that sticks in the mind however.

    Isn't that what titles are for? It's a neat little biblical twist, and it made me buy the book, despite knowing I could read it online (that, and it was cheap as a magazine, and I had a longish train ride ahead of me).

    It gets across the gist of the book - a philosophical look at computers. That makes it a good title; I don't think it's intended to convey information so much as the "flavor" of the book.

    --
    Evan

  • Yes, but how did you know where to type? That was the problem solved by the invention of the cursor or little flashing green blob on the otherwise blank screen.

    I actually met the Bunker-Ramo engineer, I can no longer remember his name, who invented the cursor. Other B-R engineers seemingly held him in great awe.

    So the Multics engineers who invented runcom were standing on the shoulders of such true giants as the father of the cursor.

  • read the first section of this paper on the history of Unix [bell-labs.com]. heck, read the whole thing, but the first section answeres you question. from that:
    ...it was not well into 1970 that Brian Kernighan suggested the name 'Unix,' in a somewhat treacherous pun on 'Multics'...
    the paper's by Dennis Ritchie.
  • No. In the beginning were the fingers. And somebody counted on them, and when the ran out of fingers they invented clay tablets and beurocracy. Each process was a person. When the king wanted to kill a process, he would use a sword.

  • I always thought that the name shell was derived from command language:
    command language -> cl -> shell

  • huh? I'm not following you there, in the cl -> shell step.
  • Unix is a pun, but it is a pun to Multics.

    The prefix Muli means mulitple or many while the prefix Uni means one. KT wrote the original Unix for himself thus, Unix verses Multics. Check out Dennis Richies website for some history of Unix and where he points this fact out.

  • It was also suggested to be Multics without balls.
  • ... as a teaching language.

  • Try saying "cl" out loud: "see-ell" sounds very close to "sh-ell"
  • by Anonymous Coward on Wednesday November 29, 2000 @01:55PM (#593919)
    Gdb was my shell for quite some time. I had a special little executable that linked in all of the libaries (yes every single one -- it took a little while to start up) on the machine. Appropriately configured .cshrc and .gdbinit files popped up emacs with the gdb prompt when I logged in.

    It all started one day when I had the usual problem of some file with "--" and "!" in the name, which was impossible to remove because either the shell or the command tried to parse the file name when you ran "rm". I had a gdb window running, and in a flash of insight I simply typed "p unlink("--!!!what_the_fuck")" at the prompt. Whammo! like the little linux newbie nerd I was, I incredibly proud and thought I was a genius.

    At the time I regularly had to travel over to another company we were contracting with to work on their broken and mis-configured machines. I was constantly fighting the fact that someone had installed some broken tcsh over the original one, killing my ability to use up-arrow to access my history. I really used gdb as my shell there, almost exclusively. People hated me because that little executable that linked everything would start up and briefly kill the machine while it loaded everything. The link command for that executable would take a while too, when I was re-compiling it.

    Of course, what I really wanted was just the ability to do Alt-p in emacs and get all my history available to me. One day someone took me aside and showed me the M-x shell command, and how you could even use cntrl-r to actually search the history, and I was blown away.

    That was many years ago and I was young and naive, and I needed the money. I still use the unlink thing from a gdb prompt occasionally, to dive past the shell expansion on files that have an asterisk in them, instead of taking two or three tries to get the escape thing right. But only if I happen to have a gdb already running.
  • Hardly. All I wanted to give was a quick link to a decent description of the book. People can bargan hunt [dealtime.com] for themselves.

    Whether anyone thinks Amazon is the M$ of online bookstores is not my concern.

  • A co-worker was just telling me how much he disliked the plurality of languges, and shell syntaxes pretending to be languages, involved in modern Unix. He said he liked the elegance of Lisp machines, if perhaps not the day-to-day practicality, and the fact that all software was just part of one big Lisp program. So, he said, why isn't there a real C-shell, that used (at least a subset) of actual C syntax?

    I thought for a moment, did a bunch of net searches, and said "yeah, why not??" I don't think it would be terribly difficult...

  • ... ULTRIX hardware?

    ULTRIX ran on various VAXen and on the MIPS-based DECstations. Most models of both are well supported by NetBSD [netbsd.org]: VAX [netbsd.org], MIPS [netbsd.org]. Most ULTRIX binaries can be run under NetBSD.

    There was also ULTRIX-11 for the PDP-11, but you're almost certainly not thinking of that.

  • Where can I get manual for DG's AOS shell?

    Probably not from DG, since EMC reportedly trashed everything.

    I suggest asking on comp.os.aos [os.aos]

  • It comes our rhyming with "skull" when I say it out loud, which is why I was confused.
  • well, it might *seem* like a joke but there really is (was?) a B-R engineer who they said "invented" the cursor. Now I realize this seems preposterous but nevertheless it's what they claimed. It probably involved a patent....

    Anyway, it is funny but no funnier than some recent "inventions" I could mention.

  • by ebh ( 116526 ) <ed@NosPAm.horch.org> on Wednesday November 29, 2000 @08:27AM (#593926) Journal
    ...in .cshrc et al.
  • On the history of Unix? Some place all these types of things are gathered together?

  • by Electric Angst ( 138229 ) on Wednesday November 29, 2000 @08:37AM (#593928)
    Damn, this is a cool article. I don't think I've seen such a direct example of radical thinking in relation to computers. There's buisness radical, which is something along the lines of "hey, we could put a brocure on the web!", and there's sci-fi radical, which generally consists of "the singularity is coming", but never such a raw, pure, approach that was so totally unique.
    We could all do well to remember, this is the kind of stuff that shows greatness.
    --
  • by Anonymous Coward on Wednesday November 29, 2000 @08:30AM (#593929)
    Multics was one of the dying breed of computers with kick-ass names. Unix? OK, I suppose I could see "Unix" trying to take over the world. Linux? No, too friendly.

    But you know when you make a computer called Multics, or even better, Multinics, it's going to turn against mankind and take over the world.

  • by Ed Avis ( 5917 ) <ed@membled.com> on Wednesday November 29, 2000 @08:38AM (#593930) Homepage
    The 'rc' designation (as in /etc/rc.d/) comes from an abbreviation of 'runcom'.
  • Odd. I always understood it to stand for "runtime configuration"

  • I did read it. Batch processing didn't exist in the beginning either. Still I take your point, it's been a while since I read it.
  • If you're impatient, you can check out DMR's webpage. [bell-labs.com]

    He's got a ton of stuff on the old days of Unix, C, etc.
    Thus sprach DrQu+xum, SID=218745.
  • in fact, I even bought the book, so I should have remembered the bit about batch programming. It's the title that sticks in the mind however.

Those who can, do; those who can't, write. Those who can't write work for the Bell Labs Record.

Working...