Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Unix Operating Systems Software

AT&T's Korn Shell Source Code Released 148

Henk Langeveld writes, "This announcement can be found at kornshell.com: March 1, 2000: I am happy to annouce the the 'i' point release of ksh93 is now available for download. For the first time, source is available as well as binaries for several architectures. If you build binaries for new architectures, and send them to us, we can add them to the download site. The download page has been completely revised in a manner that hopefully will be easier to use. ksh93 is part of the ast-open package. tksh (ksh with tk support) is also part of this package. -- David Korn
As a long-term fan I'm glad to see the korn shell now being released under a new license. The license is quite non-standard, and does include some restrictions (changes can only be distributed as patches), but as far as I can see it does allow anyone to bundle binaries with their products. The distribution format is quite non-standard. The research group at AT&T has their own packaging system, built around nmake. "
This discussion has been archived. No new comments can be posted.

AT&T's Korn Shell Source Code Released

Comments Filter:
  • by Anonymous Coward
    But for scripting, I always use ksh (on Solaris).

    There is this neat little program called Perl that will probable do everything you ever wanted (and is more standard then ksh). Actually, the only reason to use a shell scripts today is to allow both scripting and user shells to work on a system without enough memory to run two large programs at once.

    I think what we need is a ksh with readline support added.

    This would not help that much. Try zsh. It's better then ksh and probable has a modern interface.
  • by Anonymous Coward
    Hell! Remember tcpwrappers? They got a trojan uploaded to their ftp site, even though they had restricted access to their machines. A cracker hacked into their servers JUST so he could post his hacked release.

    Security will become a much bigger dealio with Linux getting more accepted.

  • by Anonymous Coward
    Is nothing compared to the power of Cornholio!

    T.P. for my bung hole!

  • by anewsome ( 58 )
    How is this shell any different from the one that's in public domain? Any ideas?
  • One of the advantages of ksh over bash is that ksh more or less comes standard with any commercial Unix. This means that one can rely on it being available wherever one's scripts need to run. Except, until now at least, on the free Unices but fortunately pdksh addresses this. That's why I use ksh for all my shell scripts.

    The same cannot be said about bash. Yes, it can most likely be compiled on all (serious) kinds of Unix, but that doesn't mean it will actually be available on any particular machine. In fact, unless your target "customers" use Linux, bash will most likely not be installed.

    Now that AT&T have opened up the real Korn shell, it really is (or can become) universal. It won't kill off bash, however, if only because it's not GPLed.

    --


  • Why not try Zsh [zsh.org]? It has all three forms of history, !-history, fcedit and arrows/I-search. Most of which can be turned on and off at your leisure. And don't forget the many other improvements over most other shells in use today.


    I wrote an article for daemon news some time ago about the advantages of zsh over bash. Check it out [daemonnews.org].

  • The ksh was the first shell I learned to use, and like you, when I came to bash, I was disappointed by its limited globbing capabilities. But since version 2 of bash, if I drop a "shopt -s extglob" in my .bashrc file, I get those cool globbing features back. Very cool.

    --
  • 2. tcsh 'autolist' functionality: possibilities are listed after an ambiguous completion on tab (bash requires two tab's), eg: % ls /usr/l[tab] lib/ libexec/ local/
    This can be set via readline. In /etc/inputrc or ~/.inputrc, put "set show-all-if-ambiguous on". This'll cause bash (which uses readline) to list all possibilities after a single tab. Check the readline man page for other nifty stuff, including the reverse-search-history (default Control-R)
  • I'm gonna be moderated way down for this, but honestly: who cares? We've already got bash, which is much better then ksh anyway. Besides, bash is GPL'd and has been GPL'd from day 1. ksh has just now been released under yet-another-open-source-license.

    But license issues aside, bash is overall a better shell. So, anyone who cares about ksh, raise your hands.

    ___
  • All you "bash/zsh is best" folks are missing an important point. ksh is the POSIX standard shell. You can virtually guarantee that a ksh script you write on one platform will run on any other platform with ksh (providing you cater for possible path name differences in external commands, but that's not a ksh problem). Add to this the fact that *every* commercial unix platform ships with ksh and its easy to see why ksh is THE standard for writing shell scripts in the commercial world. So I'm extremely happy that I can get a copy of this now for my home Linux systems.

    Macka
  • Zsh has been my shell of choice for a few years now and I still haven't discovered all of the features. It is very cool and I'd recommend it to anyone, but there are a few things that bug me...

    Mainly the completion control, spellchecking, and globbing seem to be related in functionality but not in code. For example, I have a "mp3" script that I use to play MP3s. It starts a background processs that changes to my MP3 directory and runs mpg123. This allows me to play MP3s without having to think about what my current directory is. I have a completion control like this:

    compctl -g '*.mp3' + -f -W ~/mp3 mp3

    (Yes, I'm using the old 3.0.x compctl even though I'm running 3.1.6. I haven't yet converted my completions to the new function-based system.)

    That compctl allows my Tab button to complete files that are in my MP3 directory instead of the current directory when the command is "mp3". Very handy.

    Unfortunately, spelling correction isn't smart enough to detect typos in this case. It doesn't know the filenames are in a different directory. The compctl only affects tab completion.

    Even worse, globbing doesn't work at all here. If I type "mp3 Soundgarden/*" the globbing isn't smart enough to know that this is relative to my ~/mp3 directory. Depending on the globbing options I've set it'll report "zsh: no match" or just sends the literal "Soundgarden/*" to my script causing mpg123 to bomb (there is no filename "*"). I could press Tab to have it complete to all of those files and send the whole list to my script, but I prefer the "menucomplete" option. I can modify my script to re-expand the filename string after changing directories but that's an ugly hack- glob expansion is the shell's job.

    Even with these issues Zsh is still very cool. Other shells avoid these problem by simply not providing the functionality (programmable completion).

    If someone knows how to make globbing programmable-completion-aware I'd be very interested to hear about it.

  • I use tcsh as well. It seems to be one of the more straightforward shells. I don't like how things are done in Bash, and Zsh, while nice, seems mostly apt for programmer use. Tcsh is a darn good standard shell - it moves you around, does standard csh scripting, runs programs, has job control. If you don't need more, don't change...

    (especially not to ksh where you have to hit esc twice to complete a name :P)

    -lx
  • by Lx ( 12170 )
    Or maybe they're just posting what they think, and counting on slashdot/linux/OSS people to make themselves look stupid.

    :)
    -lx
  • it's also massively bloated. Most people are never going to do any command like that, and the memory could be better used elsewhere.

    Of course on today's machines it is no big deal, but if you are in a classroom setting or something where everyone is using 486s w/ linux then zsh is definitely NOT what you want.

    Personally, I use tcsh, but only because I don't like bash. I learned unix on ksh, maybe i'll try this one out.

  • Zsh is miles above korn anyway - AT&T is a day late and a dollar short.

    It's also miles above korn in bloat and creeping featurism (producing programs more bloated than the FSF's-- that's gotta be a record or something). Fortunately, the zsh documentation basically explains this.. it has tons of features and is more for the 'power user' than the normal person.

  • Perl has version dependencies which make it hard to use for system administration.

    Have you ever taken a look at your Unix systems' internals? All those startup scripts are written in sh for a a good reason. It's portable, it doesn't require version checks or included modules (which may be on NFS mounted partitions which are unavailable at boot time or in single user mode).

    ksh is neat because it gives you an ok user interface on cleanly installed unix systems (set -o vi anyone?). Then you compile a compiler and get bash and tcsh installed :).
  • ...init, ast-base, ast-open, and ratz. And the search doesn't work. So, uh, where's the ksh download?

    Regards,

  • by bkocik ( 17609 )
    Nevermind, I'm an idiot. I didn't read the page that says it's in ast-open.

    Regards,

  • A quote I think is applicable here:

    The only way tcsh "rocks" is when the rocks are attached to it's feet in the deepest part of a very deep lake.
    -- Linus Torvalds

    --

  • Another way cool feature of ksh is `|&` which is a way of getting a pipe to a background process. I guess they call it co-processes, but it really make a client/server process. I guess you can also call it a bi-directional pipe. You can then use `read` and `print` to send and receive stuff from the "server" started with `|&`. For example, if I need to do floating point math, I can start `bc` in the background with `|&`.

    Interesting. with zsh, |& is a pipe which takes both stdout and stderr, similar to >& and >>& for redirection. It's handy, especially when you need to use a program with a rather verbose --help option. I was surprised to read that ksh does it differently, but I guess I shouldn't be, since bash doesn't recognise |& at all.

  • Little? Perl? Surely you jest. And speaking of standard ... exactly where is it installed, *standardly*? (This actually is important: if I want to set up a cron job on a large network of machines I don't admin, for instance.) In the same vein: perl has very little in the way of version-independent documentation; the set of standard modules changes too frequently.
  • "I think what we need is a ksh with readline support added. Bourne Again Korn Shell! (Maybe spell "Bourne" as "Born)"

    zsh.
  • bash is better? ksh is much faster than bash, has FPATH, executes the last command of a pipeline in the current shell, and has much more powerful key-remapping functionality. Maybe zsh is better, but bash definitely ain't. (From a former ksh user who had to downgrade to bash.)
  • Perl wont fit on a floppy....yet.

    http://www.cosource.com/cgi-bin/cos.pl/wish/info/2 87

    I think the chances of that project seeing the light of day are (ahem) slim.

    -Baz

  • I've been hooked on tcsh for a long time. I'd be willing to switch to bash if I could get it to do what I want (need!)

    1. tcsh 'autoexpand' functionality:
    expands the history command on the command line on tab, eg:
    % !ca[tab]
    goes to
    % cat /etc/passwd

    2. tcsh 'autolist' functionality:
    possibilities are listed after an ambiguous completion on tab (bash requires two tab's), eg:
    % ls /usr/l[tab]
    lib/ libexec/ local/

    I know the functionality is in bash, but is it possible to get it to work exactly as they work in tcsh, with the same keybindings? I've been using it too long to switch to hitting escape or Ctrl-D or tabbing twice to get these things.

    Thanks,
    -Bruce
  • How about backing up harsh descriptions like "massively bloated" with some concrete facts? And have you actually tried running zsh on 486s? Yes, zsh does tend to be a bit bigger than bash (depending on which bits you've enabled), but you make it sound like it's the latest version of M$ Orifice or something! On my system, it's only 20% bigger than tcsh ...

    And don't forget it does have dynamically loadable modules to keep memory footprint down, and the whole new completion shell function suite is autoloaded for the same reason. If it was possible to quantify the memory used:featurefulness ratio (which of course it isn't), zsh would be a very strong contender IMHO.

    Sure, there will always be environments where memory is limited, but you're always going to have to sacrifice features/performance in those situations.
  • Just a week or so ago a friend and I were commiserating that Linux had no good shell.

    Hello?! How can you possibly say that without checking out all the available options?

    As others have already mentioned, zsh [zsh.org] is an incredibly powerful, but vastly under-appreciated shell with enough features to delight virtually everyone. The latest development version is particularly exciting, as it has a mind-bogglingly clever context-sensitive completion system with out-of-the-box configuration for most common UNIX commands, saving you many keystrokes and much time. And if that's not good enough it always has funky built-in themeable prompts [ox.ac.uk] ;-)

    For more information specific to zsh development versions, have a look at this page [ox.ac.uk].

    I also wrote a tutorial on advanced interactive usage of UNIX shells [ox.ac.uk] a while ago, which compares some features of the more popular shells.
  • (Yes, I'm using the old 3.0.x compctl even though I'm running 3.1.6. I haven't yet converted my completions to the new function-based system.)

    (snip)

    If someone knows how to make globbing programmable-completion-aware I'd be very interested to hear about it.

    The answer is to switch to the latest development version (3.1.6-dev-19 at the time of writing) -- the new function-based completion system resolves these issues, and it's backwards compatible with your old compctls even if you haven't got time to rewrite them as functions.

  • use strict;

    $korn != $goodBand;

    1;
  • The 'autoexpand' functionality appears to work out of the box at least on Debian Potato. 'autolist' works right after saying 'setopt nolistbeep'.
  • The "factory" version has better jobs support, and includes support for tcl/tk, sorta kinda. On the down side, I think that pdksh is more robust and better maintained than the AT&T version.

    However, I agree with your sentiments. When I read this announcement, my thoughts were, essentially, "So what? We've been distributing pdksh for a decade." More importantly, the public domain shell is available on far more platforms than the AT&T shell. Notice the MicroSoftCentric distribution based upon nmake - not even upon AT&T's own (original) make.

  • In bash, you can use ^R to do a reverse incremental search in the command-line history. It's brilliant, I use it all the time.
  • Ksh always has had readline support. I believe Korn invented the concept. Just set the environment variable EDITOR to vi or emacs to get the desired personality.
  • This comment is not from Bruce Perens(Notice the 'a' in his last name) but from a Troll, so pay no attention.

  • I feel that bash, in all of it's perfection is bad because it doesn't natively appear on most unix platforms on an install... Korn shell, is pretty much everywhere, for every version of Unix. I know the two are pretty close on syntax (maybe even exact) .. I just like knowing i can walk into a situation and start writing scripts that will work the first time around, and not having to change things around because of my lack of experience on a certain shell... (For the record, I am equally strong on the bourne, korn and c-shell, however, I prefer the korn)...

    I just wish I could convert my mind into using emacs ... That way I could do a "set -o emacs" instead of "set -o vi" :) ...

    Thank you AT&T, I will appreciate this..

    -Dextius Alphaeus
  • Reminds me of Andrew S. Tanenbaum, you know, that old friend of Linus ;)

  • If you build binaries for new architectures, and send them to us, we can add them to the download site.

    I see a problem with this. What if a malicious newbie put some equally nasty routines in their source code and sent them the binaries? Trust has worked fine for a good amount of time for us free software people, but we have to remember that due our popularity a lot of unwanted people are also among us.

    I would assume that there is some testing involved and that they would require source as well.

    Haven't looked into it though, so I could be wrong.

    q

  • To my astonishment the sources of basename, [...] were included as well! Ow boy! am I going to build an AT&T/Linux distro

    Those commands were rewritten by the group Dave was in, in order to provide for themselves a set of utility commands they could use across a wide variety of platforms, working around the incompatibilities among all the Unixes.

    So, you're not really getting the original AT&T code. If you want that, look for Sun or someone to open the source they originally got from AT&T.

    -Ed

    ...who spent the early 90's beta-testing new ksh releases.

  • Actually, Original version of TETRIS (by Alex Pojitnov) had backwards 'R' first.

    History repeating.

  • *jumping up and down* Oh my GOD!!!!!!

    Down Trigger, its just korn shell fer christs sake.

    The Kennedy assassination is still unsolved. Aliens at Roswell are still unconfirmed.

    Zsh is miles above korn anyway - AT&T is a day late and a dollar short.

  • So do I. And ditto on the "draconian" comment. Geez, the thing is only a shell. Why should anyone care what the next guy is using? I'm not ready to trade the closed world of Microsoft for the closed world of zealotry.
  • Maybe so, but around here there's only cows. I ain't goin' there lol Anyways, I've always admired the korn shell. I'm just glad to see that this has finally happened.
  • w00h000000000000!!!!!!!!!!!!!!!!!!!!!!!!!!! *jumping up and down* Oh my GOD!!!!!! w00h0000000000!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!! *throwing stuff in celebration* errr...I mean... This is great! I'm glad to see this step being taken for such a fine shell.
  • > I think what we need is a ksh with readline support added.

    If you use Zsh, you'll in effect have that. Zsh doesn't actually use readline but it's builtin line editor is better and atleast as easy to use as readline.

    Zsh will run virtually all your ksh scripts. It has builtin floating point so you don't need to run bc in a co-process. It has co-processes too though, and in the latest version, there's a module to create a pseudo-tty which is great if you want to run a program that wants a tty in a coprocess. It really is way more powerful than either ksh or bash. With the new completion system, I can get things done much more quickly than in any other shell.

  • I'll be six feet deep in the cold, cold ground before I will give up my /bin/bash.

    And what then? zsh? (zombie shell)

    I am the Lord.

  • That's a really cool idea. In fact, I'm really amazed that it hasn't been done before. I think the quality of the polls lately has been a little lacking. I hope Tacofool does this shell poll.

    But we all know that, ignoring the mandatory joke choice, 90% of people will choose bash. And it's not just the Linux users. I run *BSD and I use bash. Because I like bourne, and bash is bourne with so much more.

    I'd also be interested in seeing a poll for the Linuxers on which distro they use. But it'd probably be pretty inaccurate, because apparently in some Slashdot circles running a commercial distro, especially Red Hat, is seen as being nearly as bad as running Windows. So everyone would choose either Debian or "my own l337 custom distro". ;-)

    It'd be cool if each of the different Slashdot "sections" (BSD, Linux, YRO) could have their own polls. I'd love to see some BSD-related polls, but they would never make the main poll because of the Linux-centricity of the site (don't flame me, just admit I'm right).

    That doesn't sound too hard to implement, either. Isn't it just another Slashbox, linked to a special comments page? Whaddaya say, Taco?

    I am the Lord.

  • Just to stir up the conversation and to get offtopic:

    Does anybody know of a decent REXX shell? I kinda miss this...

  • by Anonymous Coward

    Type "man zshexpn" if you don't believe me.

    Is there any other shell where you can do things like this:

    ls -l **/*(.m-7)

    For you non-zshers, that glob means "expand recursively, matching plain files only, that have been modified within 7 days". And of course you can hit TAB to have the glob expand in place for your viewing pleasure.

  • by Anonymous Coward
    and consequently I've never really learned Bash.

    Nice to hear it's source code is available.

    BTW It's been a free non-commercial download for years already.....
  • I used to use bash, when I was a less frequent UNIX user, but got hooked on tcsh under Solaris. Now, I only use bash for occasional shell scripting. As for ksh, I avoid it all together. Still a good thing to see the source coming out though. The more shells, the merrier. To each his own.

    BTW, there are some really cool .tcshrc files on dotfiles.com [dotfiles.com]. Check out the [gjvc] .tcshrc-* tarball!

    New XFMail home page [slappy.org]

  • Where have you been for the last decade? Perl killed shell scripting for non-trivial automation years ago.
    So you've chsh -s /usr/perl ? I know I'd never do such a thing.

    I spend a lot of time in the shell, writing what amounts to very small scripts (piping, substitution, etc) that never make it past the interactive command line. And sometimes, after writing the same thing many times, I make a script of it.

    And it's so very easy to write a script, because I've been writing the same thing on the command line. The transition is nearly seemless. A shell is a direct connection to Un*x commands, with only a thin veneer of control structures and variables.

    I'm sure there are interactive versions/frontends to perl, but I haven't personally seen them. bash is always pleasantly interactive, always present, nearly standard, has a low syntactic burden for its intended realm, and allows me to program interactively. (why would anyone want a non-interactive interpreted language? At least C has an excuse)

  • He seemed to think that the original still had some features not available in pdksh or elsewhere.

    The single feature which has repeatedly stung people I know, moving from ksh on AIX to bash or pdksh on Linux, is this:

    echo 1 2 3 | read x y z
    echo $z $y $x

    In ksh, the result is "3 2 1".
    In any other shell I've tried, because the "read" occurs in a subprocess with its own environment, $x $y and $z are empty.

    If I'm not busy at some point this week, I might have a look at the ksh source to see whether it treats read differently to other shell builtins...
    --
  • More source code is good no question, but Yet Another License sigh. I know (and agree) "Those who write/pay for the code get to choose the license." still how much does a custom licence buy you vs the cost of keeping all the licences rules in staight?

    -Peace
    Dave
  • malicious newbie

    Wouldn't someone who is going to hack the source code to a shell be a bit more than a 'newbie' ?

    We're not talking script-kiddie activity here...

  • Everywhere I've seen that's not an ancient all-commercial SVR4 UNIX or somesuch, tcsh has been installed. In most cases it is the default shell (though bash is making inroads). By comparison, zsh is usually not installed and seldom one of the standard shells (which is a pity, as it's much more capable than the others).
  • Now that ksh is released, is there any reason to choose it over zsh? Does it have any compelling features that may differentiate it from the open-source products that arose in its absence, or is it just a curious historical document?
  • ksh actually already has much of what you would consider to be readline support. See my other comment [slashdot.org] for info on how to enable it.
  • That's what I detest most about ksh for interactive use. I tolerate ksh, but I sure don't like it.

    I assume you're referring to the lack of the items in your subject line; I have, in my .kshrc, pushd/popd shell functions written by Fletcher Mattox (at the University of Texas at Austin). I don't personally miss ! history or arrow keys, but others might.

    I write my shell scripts for /bin/sh now.

    ...as do I, as there's no guarantee that another machine will have any shell other than /bin/sh.

  • I don't
    personally miss ! history or arrow keys, but others might.

    ...but I personally dislike I-search (interactive search or incremental search, whatever the "I" stands for), which is why I personally prefer ksh to bash (and to pdksh). Others may like I-search, in which case they might prefer bash or pdksh.

  • Interesting. with zsh, |& is a pipe which takes both stdout and stderr

    I.e., it's just like |& in the C shell? (|& isn't a zsh invention.)

    I was surprised to read that ksh does it differently

    Given that, in the Bourne shell (and compatible shells such as ksh and bash), you send both the standard output and standard error somewhere by doing

    foo >/tmp/file 2>&1

    or

    foo 2>&1 | bar

    it's not necessarily surprising that bash doesn't use (or need) |& and that ksh uses it for something else.

  • It has all three forms of history, !-history, fcedit and arrows/I-search.

    Does it have all four forms of history, including the fourth, non-I-search (of the sort ksh has, i.e. type control-R - yes, I want EMACS-style commands - fill in the string for which to search, and then hit the Enter key)?

  • That's very nice of you guys. I try. But remember that there are about 500 people working on Debian these days, and there were at least 200 when I was project leader. So there are a lot of quiet people out there who are the real heroes.

    Thanks

    Bruce

  • There is a perl shell, I haven't tried it but it looks interesting. Look here:
    http://www.focusresearch.com/gregor/psh/

    Description reads as follows:

    The Perl Shell is a shell that combines the interactive nature of a Unix shell with the power of Perl. The goal is to eventually have a full featured shell that behaves as expected for
    normal shell activity. But, the Perl Shell will use Perl syntax and functionality for for control-flow statements and other things.

  • "Thanks for Nothing?" Sorry to be replying to a post i can see instead of the original, but...

    I think this is rather cool of them to do. When I first started using ksh for real, I was already ingrained in bash. I spent countless days swearing at "that infernal ksh piece of crap..." Once I learned how bash stuff could be done in ksh, the swearing was over.

    The things I miss that are in bash are:

    • no !$ substitute! ($_ seems to be the ksh equiv)
    • no arrow history! (i use vi mode...)
    • no tab completion! (pdksh's vi-tabcomplete mode is heaven, tho)
    There're prolly a few more, but those are the most nagging. Doesn't stop me from being productive with "plain" ksh...

    --

  • If you build
    binaries for new architectures, and send them to us, we can add them to the download site.


    I see a problem with this. What if a malicious newbie put some equally nasty routines in their source code and sent them the binaries? Trust has worked fine for a good amount of time for us free software people, but we have to remember that due our popularity a lot of unwanted people are also among us.
    --
  • That's what I detest most about ksh for interactive use. I tolerate ksh, but I sure don't like it. Only thing worse is csh :-)

    I have also had shell scripts allegedly written for ksh (#!/bin/ksh) which worked on most machines but not all (we use Solaris, SunOS, AIX 3/4, HP-UX, etc etc etc).

    I write my shell scripts for /bin/sh now. I have been bitten too often by incompatibilities.

    --
  • One of the most missing features in pdksh is the FPATH variable. All my tested/debugged functions go into files that the FPATH points to. Then any script I write can use any of those functions by just calling them as if they were included in the script.

    Zsh has fpath and supports most (all?) ksh syntax. Bunch of cool interactive features too.

  • From http://www.kornshell.com/software/ [kornshell.com]

    AT&T has released free source and binaries of KornShell for non-commerical and educational use.

    Maybe I didn't look at the right web page. The license displayed on the download page is confusing. I didn't see a restriction to non-commercial and educational use in that license. Can anyone clarify the situation?

  • A few years ago, when awk, shell, and Motif, were the only games in town, that would have been great news. I used to write a lot of scripts in awk and shell. But these days, almost every machine has Perl, and you can get Tcl/Tk and Perl/Tk easily. Those tools are hardly without flaws, but for day-to-day scripting, I prefer them greatly to anything shell based.
  • Where have you been for the last decade? Perl killed shell scripting for non-trivial automation years ago.
    Exqueeze me??

    Perl is great when you have megagobs of memory and storage to throw around. It won't, however, fit onto a floppy disk; the perl5 package (just perl itself, we're not even talking tcl/tk here) is 13mb. That's a whole box of floppy disks.

    No, dude, the shell is NOT dead. There is NO substitute for #!/bin/sh when space gets tight and the rubber really meets the road. Same reason you don't even see vi on a rescue disk anymore, it's pico. Unix the old fashioned way. Tight as a Scot's purse and sharper than his tongue.

    Glenn Stone
    Clan Gordon

  • I believe that most of kornshell.com [kornshell.com] is as yet unchanged. The Korn shell has been available here in binary form for individual use. There are still some references to this older license, and it stopped at least me from using it for my own tools at work.

    The new license is supposed to relax this requirement, and to get rid of the complex deal with gtl inc - in my view an almost purely legal entity created to handle licensing on behalf of the multiple owners of the at&t software -- AT&T+NCR+Lucent(bell labs)!!!

    -- Henk Langeveld

  • Nope, that is user 3872 which appears to be the real Bruce. The fake Bruce is 123221 [slashdot.org]. This identity theft bullshit got really old fast, but at least you can check out the user info to see if it looks like the real article.

    And Bruce is also my hero. No shit! I was just installing Slink on a box today and it's really cool to see a familiar name pop up that I see everyday (almost) on /.

  • The Toys R Us has the 'R' backwards also. Coincidence? I don't think so. ;-)
  • This license is yet another form of
    'You cant use this source in anyone else's programs but ours'

    That's the real problem with license fragmentation IMO..
  • One of the most missing features in pdksh is the FPATH variable. All my tested/debugged functions go into files that the FPATH points to. Then any script I write can use any of those functions by just calling them as if they were included in the script. Saves a lot of time having when writting scripts.
  • who would expect Bruce Perens to misspell his last name? mod this to -1 so it becomes the default.

    --
  • I hate to reply to my own post, but I managed to dig up the comp.os.unix.shell FAQ posting on shell comparisons: here [faqs.org].

    Definetely worth a look for those shopping for a shell...

    engineers never lie; we just approximate the truth.
  • I just checked and can't believe that there hasn't been one, but I couldn't locate a Slashdot Poll for "Favorite Shell". If this hasn't been a poll item before, it might be interesting to do one for this.
  • It's not easy for corporate managers to let go of years of attachment. It's been a long time coming, but better late than never. I commend AT&T for releasing the Korn shell under an open source license agreement.

    Kris Magnusson
    Open Source Architect
    Novell, Inc.

  • readline doesn't do much for non-interactive scripts.

    Where have you been for the last decade? Perl killed shell scripting for non-trivial automation years ago.

  • tcsh is a derivative of csh, the most ill-conceived shell available.
  • by Anonymous Coward on Saturday March 04, 2000 @12:27PM (#1225760)
    nmake is not Microsoft nmake, it is the AT&T Bell Labs next-generation make that is way better than standard UNIX make: parallel builds, include file scanning, coshell (instead of fork/exec for every shell command), distributed build support, compiled makefiles, state tracking from one build to the next, etc., etc., etc. When originally developed, it helped cut build times for the AT&T 5ESS switch from 3 days down to 1. http://www.bell-labs.com/project/nmake/
  • by logicTrAp ( 2864 ) on Saturday March 04, 2000 @08:37PM (#1225761) Homepage
    ksh is actually quite servicable in the absense of a better one, as long as you apply the right magic to your .shrc or whatnot. To get some decent command line editting do a 'set -o emacs', to get the arrow keys etc to work
    alias __A=`/bin/echo "\020"` # Up
    alias __B=`/bin/echo "\016"` # Down
    alias __C=`/bin/echo "\006"` # Right
    alias __D=`/bin/echo "\002"` # Left
    alias __H=`/bin/echo "\001"` # Home
    alias __p=`/bin/echo "\004"` # Delete
    alias __q=`/bin/echo "\005"` # End
    alias __z=`/bin/echo "\017"` # Clear
    (The previous works on Solaris, it might need some tweaking for different forms of echo) Unfortunately, I don't know of an easy way to get TAB to do filename completion (the default is ESC ESC) Would I rather use ksh than bash? No. But, there are a lot of times when getting ksh to work nicely is easier than getting bash onto the machine in question.
  • Not that I don't like bash, but ksh is what I use at work and what I used for years prior to encountering using Linux for the first time. But perhaps my habits have become restricted to only the functions that the two hold in common. ;)

    I've never really looked closely at the differences between bash and ksh but the question that occurs to me is this: has bash overtaken ksh in functionality to the point that this release is now too late to matter?
  • by wnissen ( 59924 ) on Saturday March 04, 2000 @10:55AM (#1225763)
    This reminds me of the article posted a while ago on the original Unix source code being available. Something like "Open source in history"? Ah , here [slashdot.org] it is. Anyway, kind of sad that it took this long for one of the best shells to be released. I'm not blaming David Korn, it's a great shell and I'm sure he did what he thought was most responsible for AT&T to do with it. Heck, I'm completely willing to believe that it took this long to convince his bosses that it would be a good idea from a standpoint of actual improvement to the code. I don't see anything on the web site as to why they decided to release , although "free for non-commercial and educational use" is not exactly what I'd call "free source"...

    Walt

    Walt
  • by dgk ( 159863 ) on Sunday March 05, 2000 @05:34PM (#1225764)
    I read all the comments related to AT&T's Korn Shell Source Code Released
    posting and decided to provide some additional information that
    should clear up so many misconceptions. I will also try to get a FAQ
    on the kornshell.com site to clarify many other points as well.

    First of all, I would like to thank they authors of bash, pdksh,
    and zsh for their valuable contributions. I have tried to
    provide information on changes to ksh so that these shells
    could add these features in a compatabile way.

    I will respond to some of the comments here:

    1. Too little too late. This may or may not be true, but it
    is irrelevant. At this point, it's too early to make such
    a statement -- the user community will decide. I would have
    prefered to make this OpenSource from the beginning but I did
    not have this option. It has taken a lot of effort to get
    this source released at all. Note that ksh93 is only a
    part of this AT&T open source distribution and that there are
    tools that have no other UNIX/LINUX equivalent.

    2. bash is much better than ksh.
    These comments have no information that would make them
    meaningful without specific examples. What version of ksh
    and what version of bash? I am interested in hearing which
    features of bash are missing from ksh93 (see point #5).

    3. zsh is better than ksh.
    Although zsh has an impressive set of features,
    it is not POSIX compatible making it difficult to write
    portable scripts. I am interested in hearing from zsh
    users what *language features* are missing in ksh93
    (I am aware of most of the interactive enhancements).

    4. tcsh is better than ksh.
    Irrelevant. tcsh is based on csh, which is generally agreed
    not to be a good scriping language. So why compare it?
    See "csh programming considered harmful" by Tom Christiansen
    (http://www.faqs.org/faqs/unix-faq/shell/csh-why not)

    5. There are some features in ksh93i that some users seem to be
    unaware of. Several of these are not in bash, zsh, or pdksh.
    a. File and command name completion (using tab in viraw mode).
    b. Key binding (arrow keys work on most systems by default).
    c. Process substitution, e.g. command1 ( command2 )
    d. Ability to connect to tcp or udp connections using
    /dev/tcp/hostname/portno with redirections.
    e. Complete ANSI-C floating point arithmetic, including
    math functions.
    f. Complete ANSI-C printf formatting with several extensions
    including date/time foratting using %T.
    g. ANSI-C string input using $'...'. (I believe zsh has this).
    h. Associative arrays.
    i. Extended regular expression matching/replacement including
    backreferences for shell variables.
    j. Runtime loading of extensions including builtins.
    There is an API for referencing ksh93 internals.
    k. Active variables. The ability to associate processing
    functions with shell variables (similar to traces in tcl).
    l. Compound objects, useful for implementing data structures.
    m. Reference variables for passing variables by name.
    n. The shell is written as a library that can be reused
    in other commands. For example, dtksh which combines
    ksh93 with X11 and Motif, and tksh which combines
    ksh93 with tcl/tk.

    5. Confusion about the licensing terms.
    The kornshell.com home page hasn't been updated yet so it still
    contains outdated references to commercial and educational
    uses. There is no such distinction. The license does
    allow for commercial distribution of binaries and/or source.
    We do not have OSF certification as of yet, but I do think
    that the license satisfies all of the OpenSource principles.
    The license does not have the GNU GPL restrictions.

    6. nmake is not Microsoft nmake.
    It certainly is not. It is simply the best make program
    that I have every seen. The Makefiles are consice and
    protable. No makefile or dependency generators are needed.
    It can generate both UNIX makefiles and Microsoft nmake
    files for systems that do not have AT&T nmake.
  • by costas ( 38724 ) on Saturday March 04, 2000 @11:30AM (#1225765) Homepage
    I am kinda dissappointed noone in this thread has mentioned Zsh [zsh.org].

    Z-Shell is competitive with bash, and IIRC the comp.os.unix.shell FAQ shell comparison it actually has more features than any other shell out there. The new (still unstable version) even has dynamic module loading...

    Plus, it's a (near) drop-in replacement for ksh and can even emulate some csh features for those that like them (search for the cshjunkie* options in the manual :-)


    engineers never lie; we just approximate the truth.
  • by Greg Koenig ( 92609 ) on Saturday March 04, 2000 @08:44PM (#1225766)
    What's really funny is that I've been to USENIX conferences with Dave and he's worn "Korn" T-shirts. I about died the first time I saw him doing this.

    Actually, even more funny was when I was at the USENIX Windows NT symposium a few years ago. The Microsofties were up on stage talking about their Unix toolkit for Windows NT. This includes several common Unix commands (ls, cp, ps, etc.) along with a version of ksh. Dave stood up and went to the microphone and mentioned a few areas of incompatibility with the version of ksh used in the Unix toolkit for Windows NT. The Microsofties, not realizing who they were talking to, kept going back and forth with him, insisting that their version of ksh actually did comply with the AT&T ksh, and sort of implying that Dave (who they still didn't recognize) didn't know what he was talking about. Nearly everybody in the audience was laughing out loud, and eventually somebody let the Microsofties in on who exactly they were talking to.
  • by gjt ( 93855 ) on Saturday March 04, 2000 @11:30AM (#1225767)
    I use bash as my interactive shell.

    But for scripting, I always use ksh (on Solaris). Why? The ksh syntax is a superset of the original Bourne Shell, and therefore pretty much a superset of the Bourne Again Shell.

    bash primarily adds readline support which makes it super-easy to use interactively. readline doesn't do much for non-interactive scripts.

    In the Korn shell, the typeset comand provides a number of extra features for things such as presenting non-decimal numbers, and converting from upper case text to lower case and vice versa.

    Another way cool feature of ksh is `|&` which is a way of getting a pipe to a background process. I guess they call it co-processes, but it really make a client/server process. I guess you can also call it a bi-directional pipe. You can then use `read` and `print` to send and receive stuff from the "server" started with `|&`. For example, if I need to do floating point math, I can start `bc` in the background with `|&`.

    I think what we need is a ksh with readline support added. Bourne Again Korn Shell! (Maybe spell "Bourne" as "Born)

  • by Bruce Perens ( 3872 ) <bruce@perens.com> on Saturday March 04, 2000 @11:10AM (#1225768) Homepage Journal
    We reviewed this on the license-discuss mailing list a long time ago. Everybody in the discussion at that time concluded that it was an Open Source license, although I don't think anyone was as happy with it as they would be with some of our simpler and less restrictive licenses. I doubt that OSI will certify it but that's up to them. They tend to reject most termination clauses.

    I discussed the ksh source release with David Korn a while back, including the point that it was probably too late. He seemed to think that the original still had some features not available in pdksh or elsewhere.

    Thanks

    Bruce

  • by Carl ( 12719 ) on Saturday March 04, 2000 @11:22AM (#1225769) Homepage
    Debian legal doesn't seem to consider this license DFSG free. See the thread starting at http://www.debia n.org/Lists-Archives/debian-legal-0003/msg00009.ht ml [debian.org]. Not all messages are archived yet but the main points are:
    • a "you must monitor our web site" clause
    • a "you are responsible for ensuring that people you distribute the software to comply with this license" clause
    • a "you must contact us if you distribute patches" clause
    • an unilateral-termination clause
    • a "you must adhere to U.S. law" clause
    The 'ensure that others comply' and the 'Termination clause' seem very non-free, the others are only very annoying (especialy if you don't have easy internet access and live outside the US).
  • by Greyfox ( 87712 ) on Saturday March 04, 2000 @11:00AM (#1225770) Homepage Journal
    AT&T shares fell in early trading after the popular band "Korn" announced a lawsuit for trademark infringement. "It's obvious they're using our name. Who would have thought of spelling corn with a "K" except us?" commented a lawyer for the band. AT&T declined to comment on the suit.

Beware of Programmers who carry screwdrivers. -- Leonard Brandwein

Working...