AT&T's Korn Shell Source Code Released
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. "
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. "
I believe it has. Pdksh is a reimplementation of ksh88, not ksh93, the latter being much improved. Bash 1 also lags considerably behind ksh93, and bash 2 still seems to be somewhere between ksh88 and ksh93. Regarding ksh93's specific advantages, I particularly like the maths-related features, and the associative arrays are quite nice too.
If you don't use any of ksh93's advanced features, you won't notice much of a difference between it and more basic shells like bash (or pdksh). In fact, you probably won't like it as much, since it requires more work to initially configure (bash, for example, hard-codes/defaults a lot of things like the ENV file, emacs keybindings, etc., so novice users don't have to worry about configuring/enabling them). If, on the other hand, you do use ksh93's advanced features, downgrading to bash or pdksh is painful.
Besides which, zsh isn't miles above ksh. As a programming language, I'd say ksh93 is decidedly superior. As an interactive shell, either is fine.
No, its not too late.
Bash 1.x doesn't come close to ksh as far as a language goes.
Bash 2.x is closer to being equal to ksh, but
its been very buggy and improvements have been
glacial in coming.
pdksh has trouble with job control and sending
signals.
Just a week or so ago a friend and I were commiserating that Linux had no good shell.
Now it looks like it may get one.
Personally, I am often thankful that ksh (or rather pdksh) exists, basically, because bash is restricted by being bourne shell-compatible. ksh has some nice extensions. Shell functions with return codes greater than 255 frex.
And I script with zsh when using globbing, because bash sucks for that too.
No, it is not too late. pdksh is nice, but nasty bugs aside it is not the ksh. Try to write stuff, that must run on other, read some customers', machine .. either sh or ksh at most. One just cannot rely on having them a bash, perhaps a certain version or better, installed.
Okay, add to that some sentiment as being with *nix for a long time this is a great thing to me to have too.
Getting closer and closer, now I only need to make some room to put up a PDP-11 8)
Nothing. I just wanted to talk to bruce perens. Did you ever know that you're my hero?
Should be considered to be an oxymoron.
DOWN WITH OPEN SOURCE
YEP ... now take your pills and go back to bed.
Guys, you have to figure that 80% + of the flaming trolls like this are from A) Windows turd-minions B) Turd-Minions on any platform just trying to make Slashdot/linux/OSS people look stupid.
maybe the best thing to do is try to ignore them until the moderators give them their -1 .
My god, where the hell do you think UNIX originated? If it wasn't for AT&T, your precious Linux wouldn't even EXIST. BTW, a big thanks to AT&T and Mr. Korn for releasing this excellent product to us.
http://www.research.att.com/sw/tools/uwin
is a good band
The worst bug I've found is related to scoping of variables within loops. Making pdksh useless for any script which requires a loop.
Hmmm... seems fine on my system. What compilers are you using? Try the newest gcc release from http://gcc.gnu.org.
I hate to shatter your little illusions, but that's not the real Bruce. You can tell by the little '.' after his name. Don't feel bad. I used to fall for that too.
The above post points out a very serious flaw in the lissence!
Really, I do not know why anyone would want to use ksh anyway. It's crap compaired to zsh and bash is really more standard now anyway (fuck the commercial unixes and their out of date choice of shells. BSD and Linux are what matters).
To my astonishment the sources of basename, cat, chgrp, chmod, chown, cmp, comm, cp, cut, dirname, expr, fmt, fold, getconf, head, id, join, logname, mime, mkdir, mkfifo, od, paste, pathchk, pr, rmdir, strings, tail, tee, tr, tty, uname, uniq, uudecode, uuencode, wc, what and who were included as well! Ow boy! am I going to build an AT&T/Linux distro
This phenomenon invites closer analysis -- and perhaps we should probably have had grounds for thinking that the linux community can bring to bear on a project collapse into a coherent account of hacker ideology. You know, that's almost a sentence! <GRIN>
Why would anyone moderate this down as a troll? The guy thinks it was about damn time AT&T released ksh source. I tend to agree.
Meta-moderators, do your duty!
:%s/hack/crack/ Thank you.
Ok, I'm converted! I here by renounce my evil pdksh/ksh ways and will join you in exploring the wonders of zsh. (Actaully, I serious.. that was pretty cool)
I'd rather see Larry Wall make a shell out of Perl, but it sounds like zsh is a good compramize.
.. I learned perl. And honestly, I haven't written a single shell script since then... well maybe a batch file type of script or two, but nothing that required any real calculation or flow control. Seriously, shell scripting is a dead art if you ask me, only useful for legacy systems on which it is impossible to install perl or some better solution. The shell is for CLI stuff, real programming happens with languages that don't try to be a UI to the operating system at the same time. Just my 2 cents.
ACTUALLY, it's a backwards R slick.
Seems to be down though anyway Mr dogfart.
Nope. The O is backwards.
"I'm not ready to trade the closed world of Microsoft for the closed world of zealotry."
-reallocate
Good quote for a sig.
What do you mean? It's that self-importantance and trivial flamewars that has earned Unix the 0.2% marketshare that it enjoys today!
Yeah, I really dig the Paula Abdul song as well.
Doesn't that seem a little closed-minded? The ksh is on most all commercial UNIX distributions. Why is it a bad thing to have some true measure of command line interoperability between the business UNIX variants and the home/hobbyist/personal one? The entire bash vs csh vs tcsh vs zsh vs ksh vs etc. sounds like a vi vs emacs or a "tastes great" vs "less filling" argument. Why not use the shell you know and like (personally, I prefer ksh) and not turn this into some type of religious holy war? Just an observation, but I'm really tired of the hypocrisy on /. One company gets slammed because they don't open source their product, but another gets slammed as too little, too late (see the "lame after the fact source release" statement)when they do just that. If you prefer bash, then shut up, use it, and please don't tell me how crappy my preference is.
Too little, too late, Korn.
Where where you 10 years ago when it wold have made a difference?
Could someone help me by translating this into English sentences? -jaz
the |<()r|\| is listening. for tomorrow is the harvest, and them, it is JUDGEMENT DAY!!
The above is OFFTOPIC. It is not a troll. Look up "troll" in the Jargon File. You were right to moderate it down, but you should have used the right category.
You lose.
Try harder next time.
trolls don't speak english.
Sorry to say...I'm not quite sure why everyone beats up on tcsh so much. Coming from a solid System V background, I had always used ksh, as it was the environment you *had* to work in. But, for the past six or seven years tcsh has been my default shell.
Why? Well, as far as I can tell, tcsh seems to be much friendlier to people 'out of the box' - taking good pieces from sh, csh, and ksh. While not in strict compliance with what POSIX might think of a shell, tcsh has suited me very well for the casual login.
I still tend to write scripts in ksh since that was my indoctrination to UNIX, but for everyday kicking about in a shell, tcsh is my mainstay. Unfortunately I have to agree with the 'too little - too late' opinion about the 'opening' of ksh...the public domain version has served me well enough in the Linux envronment for some time now and I'm not really anxious to leave it for some unknown licensing that I might not be able to live with.
Lest we forget,though, that newcomers to the shell prompt like tcsh, ash, bash, and zsh *ALL* base themselves in some degree or another on those which have come before - sh, csh, and ksh.
I say that every shell has its purpose - some are obviously better than others at specific tasks. Use what you like... [;')
I put the source up on my site. Everything looks good, but I haven't been able to get it to compile on my SPARC... anyone have any ideas?
God, it's so rare to see a moderator get something right for a change!
I mean, sure, it's a crude and useless troll and nobody bit, but at least it's an attempt.
This flooder bullshit isn't a troll, it's offtopic. It should indeed have been moderated down, but you should have done it correctly. Look up "troll" in the Jargon File, since you don't know what it means.
Get it right next time. I'm tired of all the morons like you fucking up Slashdot.
No, the O is upside-down.
we dont need some lame after the fact source release of ksh when bash blows it away and is in fact the shell unix was built around in the 90's.
what has a big evil company like att done for linux/unix that open source hasnt done ten times over....
No the O is actually ()
Actually, the BAND Korn uses some funky backwards "K" IIRC.
Describing the Korn Shell as a "random shell" is just flame bait IMO. Either that or you're the sort of user who gets a nose bleed if you ventures too far from the Red Hat distro.
I have a mirror of the site here (kept crashing, must have been /.'ed).
I really like KSH. I use it every day, and have for years now. Works nice, but man oh man, the code is just a pile of junk. I had a fix a bug in it once (and submitted it) when I worked at a place that had the full source license to it. Take a look at the code. Yow.
solaris 2.8 comes with sh, ksh, csh, tcsh, bash, and zsh standard. (also apache, but that's another story).
did dave korn do anything except write what is now a second-rate shell?
So what's the big deal? Some random browser finally gets almost Open Sourced(tm). I'll stick with lynx.
I care.
From what I can see from the replies so far, the people who post here are a draconian bunch to say the least. So what, if you think bash is better? Is it really any of your business what shell someone uses? Criticising the release of ksh source just because you prefer bash is the height of self-importance.
Jon Katz loves the way it tastes!
I'll be six feet deep in the cold, cold ground before I will give up my /bin/bash.
Bitchslapped? Give Rob a bitchslap from bitchslapped.com.
finally.
Chaos, Mayhem, and Destruction: Not
So what's the big deal? Some random operating system has been Open Sourced (no tm) from the beginning. I'll stick with Windows.
Show me one.
Thanks
Bruce
Thanks
Bruce
Have you checked out TECHNOCRAT.NET?
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.
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.
T.P. for my bung hole!
How is this shell any different from the one that's in public domain? Any ideas?
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.
--
Linux user since early January 1992.
Why not try Zsh? 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.
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.
--
For every post, there is an equal and opposite re-post.
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.
___
___
If you think big enough, you'll never have to do it.
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...
:P)
(especially not to ksh where you have to hit esc twice to complete a name
-lx
Or maybe they're just posting what they think, and counting on slashdot/linux/OSS people to make themselves look stupid.
:)
-lx
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.
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
Regards,
-BK
Chemical Blog
Regards,
-BK
Chemical Blog
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
--
--
We apologise for the inconvenience.
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.
You're a suburbanite.
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.
--
My comments and opinions completely reflect those of anyone and anything I am remotely associated with.
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!)
/etc/passwd
/usr/l[tab]
1. tcsh 'autoexpand' functionality:
expands the history command on the command line on tab, eg:
% !ca[tab]
goes to
% cat
2. tcsh 'autolist' functionality:
possibilities are listed after an ambiguous completion on tab (bash requires two tab's), eg:
% ls
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 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
For more information specific to zsh development versions, have a look at this page.
I also wrote a tutorial on advanced interactive usage of UNIX shells a while ago, which compares some features of the more popular shells.
(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.
The 'autoexpand' functionality appears to work out of the box at least on Debian Potato. 'autolist' works right after saying 'setopt nolistbeep'.
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.
Try out fish, the friendly interactive shell.
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)...
... That way I could do a "set -o emacs" instead of "set -o vi" :) ...
I just wish I could convert my mind into using emacs
Thank you AT&T, I will appreciate this..
-Dextius Alphaeus
-- Java is not a Jedi trait... "do, or do not, there is no try" --
Reminds me of Andrew S. Tanenbaum, you know, that old friend of Linus ;)
Going on means going far, going far means returning. Tao te Ching
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
"PROFANITY is the inevitable literary crutch of the inarticulate MOTHER FUCKER." -- some PC user
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.
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.
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.
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.
I am the Lord.
God Hates Moderators.
Just to stir up the conversation and to get offtopic:
Does anybody know of a decent REXX shell? I kinda miss this...
The danger from computers is not that they will eventually get as smart as men, but we will meanwhile agree to meet them
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.
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.....
BTW, there are some really cool .tcshrc files on dotfiles.com. Check out the [gjvc] .tcshrc-* tarball!
New XFMail home page
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
Free as in "the Truth shall set you..."
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 for info on how to enable 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.
...as do I, as there's no guarantee that another machine will have any shell other than /bin/sh.
...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.
I.e., it's just like |& in the C shell? (|& isn't a zsh invention.)
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
or
it's not necessarily surprising that bash doesn't use (or need) |& and that ksh uses it for something else.
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)?
Thanks
Bruce
Bruce Perens.
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.
-- I speak only for myself.
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 :-)
/bin/sh now. I have been bitten too often by incompatibilities.
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
--
Infuriate left and right
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?
Mea navis aericumbens anguillis abundat
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.
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
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 /.
who would expect Bruce Perens to misspell his last name? mod this to -1 so it becomes the default.
--
+&x
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.
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.
Kris Magnusson
Open Source Architect
Novell, Inc.
"I thought I could organize freedom. How Scandinavian of me."
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.
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/
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?
Geeky modern art T-shirts
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 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
I read all the comments related to AT&T's Korn Shell Source Code Released
y not)
/dev/tcp/hostname/portno with redirections.
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-wh
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
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.
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.
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)
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
Bruce Perens.
- 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).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.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?