On Sunday 21 September 2008 11:32:15 Marc W. Abel wrote:
> Thanks to everyone participating in this discussion.  I really like all
> this attention to detail.
>
> Program            \e == \033 ?
> ---------------------------------------
> bash echo          yes
> bash printf        yes
> coreutils echo     no
> coreutils printf   no
>
> I'm not sure (vda) how you'll adopt "their" behavior, as "they" differ.
> It comes down to scope; I don't think BusyBox has ever adopted bash as a
> standard to follow,

Yes, it has.

The thing about bash is that it's been the official shell of Linux since 
before it was called "Linux".  If you read "Just for Fun", it goes over the 
history of the Linux kernel.

Linus Torvalds started out his Unix use by using a Sinclair with a modem to 
connect to the university's microvax, and hang out on usenet.  When he got a 
386, he installed Minix on it, but the micro-kernel nature of Minix couldn't 
keep up with a 2400 bps modem without dropping characters, so he wrote his 
own term program in 386 assembly, which booted from a floppy and talked 
directly to the hardware.  He made it multi-threaded (with a trivial process 
scheduler) as a teaching exercise, using one thread to read from keyboard and 
write to modem, and a second thread reading from modem and writing to the 
screen.

The problem was he wanted to upload and download files, which meant he had to 
teach it to write to the filesystem, meaning it needed to understand the 
minix filesystem layout.  He did that, but he had to reboot into minix in 
order to delete files to make space, or create directories, rename files, 
etc.  So to avoid so many reboots, he added a system call interface to his 
terminal program and taught it to handle all the system calls bash needed.

It was, specifically, bash.  Bash was the first unix program he taught his 
term program to run, and the need to run Bash is what caused his term program 
to evolve into a unix kernel.  Bash has been the standard shell of every 
LInux system ever since, up until Ubuntu swapped in the Defective Annoying 
SHell which (among other things) broke the Linux kernel build.

Now these were mostly old versions of bash.  I stopped paying attention to 
anything that went in after 2.04b.  But things like curly bracket file 
listing syntax, or echo needing -e?  You encounter them all over the place in 
Linux.

(And note that if you use dash, echo doesn't support options at all.  
No "echo -e" or "echo -n".  Yeah, that breaks things.)

I have several scripts that use \e as the start of ansi escape sequences, by 
the way.  (Octal's a bit 1970's for my tastes...)

Rob
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to