The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
passing variable from bash to perl from bash script arsidh Shell Programming and Scripting 10 06-04-2008 09:25 AM
Bash differences on unix's bongobonga UNIX for Dummies Questions & Answers 4 02-02-2008 10:21 AM
Differences between SAN and NAS jigarlakhani Filesystems, Disks and Memory 2 11-15-2003 01:09 PM
differences nis nis+ joerg IP Networking 2 06-24-2002 12:47 AM

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 05-08-2003
deckard's Avatar
Registered User
 

Join Date: Jul 2002
Location: Ohio
Posts: 107
What are the differences between 'bash' and 'sh'

Hopefully this doesn't come off as too much of a "newbie" question or a flamebait. But I have recently begun working with a Sun Solaris box after having spent the past five years working with RedHat. From what i can tell, thing look fairly similar and the 'man' command is some help. But I've noticed that the default shell is 'sh' and I tend to be more familiar with 'bash' since that's the default in RedHat. I understand that the reason that 'sh' is the defatul for root is that it's statically compiled and available even if the /usr partition is unavailable. But there are features that I like that seem to be missing:
-Arrow up for command history
-Arrays or creating arrays like this: test1=( `ls` )
-Emacs style editing on the command line
Just to name a few. So my question is, how different is 'sh' from 'bash'. I imagine there are things I will have to rewrite in my bash scripts to get them to work under 'sh'. But how much work am I really in for? Are there any good resources online that will lay out the differences or good books that anyone would recommend? I love the O'Reilly book on Bash. Anything similar for 'sh'? Thanks
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 05-08-2003
oombera's Avatar
Have a day :|
 

Join Date: Aug 2002
Location: Cleveland, OH
Posts: 804
http://www.faqs.org/faqs/unix-faq/sh...l-differences/

This FAQ lists the differences between a few different shells. About half-way down is a comparison of which functions are available/unavailable in the different shells.
Reply With Quote
  #3 (permalink)  
Old 05-08-2003
google's Avatar
Moderator
 

Join Date: Jul 2002
Location: Atlanta
Posts: 740
In my opinion they are fairly close, but both have commands available to one and not the other, for example substring command is not supported in sh but is in bash ${TEST:$i:1} For arrays, in /sh you use the following syntax

${array} - accesses element 0
${array[i]} accessed element 0 - 1023
${array[*]} and ${array[@]} -uses all elements of the array (list), the difference in the two is that one set is quoted and the other isnt
You can skip the ${ } syntax in sh by using (( array[ ] ))

Personally, I think sh (actually ksh) is better suited for scripting (some may disagree...like I said, just my opinion).

If you want emacs set your EDITOR variable to use emacs. /sh by default uses vi...pretty easy to use once you struggle through the command syntax!!! Use set -o to see what options you have turned on.

To get your history, use ESC-j or ESC-k to scroll up or down. command expansion, hit ESC twice to expand what you are typing on command line. Like bash, you can use / to search your command history.

Plenty other differences Im sure, pick up O'Reilly - UNIX in a Nutshell to see all commands specific to sh.
Reply With Quote
  #4 (permalink)  
Old 05-08-2003
Perderabo's Avatar
Unix Daemon
 

Join Date: Aug 2001
Location: Washington DC Area
Posts: 8,355
If you like bash a lot, maybe you should just continue to use it. Solaris 8 includes bash in the full distrubution. And bash precompiled for Sun boxes is available at http://www.sunfreeware.com
Reply With Quote
  #5 (permalink)  
Old 05-08-2003
deckard's Avatar
Registered User
 

Join Date: Jul 2002
Location: Ohio
Posts: 107
google, I am facinated by what you said about setting the EDITOR variable to 'vi'. I tried this but was unable to make use of the ESC-i and ESC-k to peruse the history in 'sh'. I have a feeling I misunderstood something though. (I'm using Solaris 8 BTW) When you mentioned using 'vi', perhaps you weren't talking about editing commands at the 'sh' prompt? Thanks for everyones suggestions.
Reply With Quote
  #6 (permalink)  
Old 05-08-2003
google's Avatar
Moderator
 

Join Date: Jul 2002
Location: Atlanta
Posts: 740
I am using HPUX 11.xx my shell is by default ksh

To see what options you have turned on, run the following command:
set -o

Output from my system gave me:
sh ---> set -o
Current option settings
allexport on
bgnice on
emacs off
errexit off
gmacs off
ignoreeof off
interactive on
keyword off
markdirs off
monitor on
noexec off
noclobber off
noglob off
nolog off
nounset on
privileged off
restricted off
trackall off
verbose off
vi on
viraw off
xtrace off
sh --->

If vi is not "on", you can turn it on by running the following command:
set -o vi

After that, verify its on by re-running set -o....then try using ESC-j and ESC-k to see command history..On HPUX at least, the command history and line expansion is a function of vi.
Reply With Quote
  #7 (permalink)  
Old 05-08-2003
killerserv's Avatar
Unix Predator
 

Join Date: Dec 2000
Location: Phoenix, AZ
Posts: 670
A nice difrentiation for the shells.

http://www.ugrad.cs.ubc.ca/~cs219/Co...fferences.html
Reply With Quote
Google UNIX.COM
Reply

Tags
solaris

Thread Tools
Display Modes




All times are GMT -7. The time now is 03:37 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008 The CEP Blog All Rights Reserved -Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0