What's your most useful shell?


Poll: What's your most useful shell?
Poll Options
What's your most useful shell?

 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users What's your most useful shell?
# 225  
Old 03-13-2013
A couple of remarks / additions:
Quote:
Originally Posted by Corona688
I doubt -- and hope -- their ksh isn't 100% compatible, since Solaris' usual idea of backwards compatibility is denying you all future features in the standard /bin/whatever, making you use /crazy/path/to/modern/whatever if you want them. Any shell that calls itself a Bourne shell, including bash, dash, ksh, pdksh, ash, and a few others are supposed to handle the standard Bourne features. The primary difference between bash and ksh is the way they handle arrays. In bash you do VAR=( a b c d e f ), in ksh you do set -a VAR ...
In ksh88, yes but in ksh93 arrays can also be set like VAR=( a b c d e f )
Quote:
Another major difference is the order they handle pipes. In Bourne shells, echo asdf | read VAR won't work because 'read' will end up in a subshell, but in KSH that order is reversed -- the rightmost thing ends up in your local shell. This is a handy feature but profoundly not how Bourne shell handles it, so KSH could be considered incompatible that way... could conceivably alter the meaning of some code.
The order is not reversed. In most Bourne derived shells both LHS and RHS end up in a subshell. In ksh the RHS ends up in the local shell. Bash 4 also has an option to accomplish this.. The POSIX specification allows for both types of behavior.
Quote:
ksh also has the ability to handle floating point numbers, which bash and sh don't.
ksh93 does, ksh88 does not.
Quote:

For the most part if you stick to strict sh code, it will work great in all three shells.
What is meant with "strict sh" code. I would say best is to stick with what is the POSIX shell specification and on most modern Unix/Linux systems /bin/sh is compliant with these specifications (except Solaris <=10 where /bin/sh is a strict pre-POSIX Bourne shell and the POSIX compliant shell is /usr/xpg4/bin/sh, or mostly compliant on some Linux distributions). The POSIX shell is more ksh derived than Bourne shell derived (although ksh is mostly Bourne shell derived itself and ksh88 itself is not POSIX compliant, but ksh93 is).
Quote:
Some really nice things that vanilla sh doesn't have and its descendents generally do include
  • String operations, so you can do echo ${string:offset:length} instead of echo $string | cut
  • var=$(command) instead of var=`command`, since $( ) nest properly and never split
  • Mathematics with VAR=$((A+B)) instead of let VAR=A+B
  • Better and more complex conditionals with if [[ ... ]] instead of if [ ... ]

All these features are becoming more and more standard now. There's just a few holdouts left -- like Solaris' ancient crusty /bin/sh which AFAIK had none of the above for 'compatibility reasons'... If they're finally updating it, that's lovely.
  • Some string operations are standard on all POSIX shells, but not some additional ones in bash and ksh93 like ${var/xxx/yy} or ${VAR:1:1}.
  • var=$(command) is available on all POSIX shells
  • Mathematics with VAR=$((A+B)) is standard on all POSIX shells.

Last edited by Scrutinizer; 03-13-2013 at 08:21 AM..
# 226  
Old 03-13-2013
Yes, by vanilla sh I didn't necessarily mean POSIX. There are some old shells out there.
# 227  
Old 03-29-2013
Quote:
Originally Posted by Corona688
I doubt -- and hope -- their ksh isn't 100% compatible, since Solaris' usual idea of backwards compatibility is denying you all future features in the standard /bin/whatever, making you use /crazy/path/to/modern/whatever if you want them.
I understand your rant but don't confuse craziness to choice.

Solaris default PATH (/usr/bin) is providing commands that do not break scripts when the OS is upgraded. This compatibility is not there to bother users but on the opposite a strong expectation from most customers and software developers.

When Solaris 2.x was launched, many users that were used to SunOS 4.x BSD syntax were confused. To avoid the break in their habits, they just had to prepend /usr/ucb (University of California at Berkeley) to their path to get a BSDish CLI environment.

Similarily, if you expect commands to behave the GNU (i.e. Linux) way, you can now set your PATH to have /usr/gnu/bin first. This is even the default, along with bash as login shell, for regular users with Solaris 11.

If on the other hand, you don't want the traditional Solaris behavior but a POSIX, standard conformant one, just have /usr/xpg4/bin first in your PATH.

Finally, many commands located in /usr/bin have been enhanced to support widely accepted still non standard options so your statement is much less valid with Solaris 11.
# 228  
Old 04-17-2013
I second a plus vote for the no-break concept of the Solaris approach. It is what VMS (OpenVMS) was also famous for. You could copy a binary from VMS 2.1 to VMS 6.0 and it ran correctly. Ditto an old SPARCn binary on a SPARCn+m architecture.

Solaris system startup scripts from a long time ago still work as designed. SMF and some other changes have obviated the existence of a lot of them.

Solaris 11 has a slightly different feel, especially with regard to where shells and standard commands reside. Early on stuff like GNU coreutils was likely to be in /usr/local bin. Then the GNU coreutils official next move was to /usr/sfw/bin, now their most recent home is /usr/gnu/bin.

No big deal unless run a lot of different Solaris OSes. So when you are root and then you su, you have to be careful to get the right awk: nawk, awk, or gawk depending on app owners individual profiles. And Solaris version. Wrong awk may give you some surprises.. tr also does that.

The one command that causes the most turmoil on the forums is date. For one: Solaris /usr/bin/date does not support the %s epoch seconds format specifier. People post GNU date math answers not knowing the issues standard Solaris date causes for uninformed forum readers. nawk vs awk is another problem for readers.
These 2 Users Gave Thanks to jim mcnamara For This Post:
# 229  
Old 04-25-2013
I grow old on bash Smilie
I use it all the time... actually didn't even bother to check others out!
# 230  
Old 08-28-2014
The one that I'm using at the time!Smilie
# 231  
Old 10-06-2014
Quote:
Originally Posted by darkman_hr
I grow old on bash Smilie
I use it all the time... actually didn't even bother to check others out!
Stay young with zsh!
zsh is powerful and fast and safe.
I see that SuSE 11 SP3 has added support for a zsh login shell.
Could a moderator please add /bin/zsh to the voting list?
This User Gave Thanks to MadeInGermany For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pass C shell array to another C shell script(csh) and shell(sh)

Dear Friends, Please help me on this my script name is send.csh In this i have written the statement like this set args = ( city state country price ) I want to pass this array to another c shell called receiver.csh. and i want to use it in this c shell or how to pass to... (2 Replies)
Discussion started by: SA_Palani
2 Replies

2. UNIX for Dummies Questions & Answers

Shell script to read lines in a text file and filter user data Shell Programming and Scripting

sxsaaas (3 Replies)
Discussion started by: VikrantD
3 Replies

3. Shell Programming and Scripting

Any shell or hack that makes the shell command line take vi commands?

basically i'm tired of hitting the left arrow a few dozen times when correcting a mistake or modifying a history command i'd like to use vim style key shortcuts while on the command line so that a 55 moves the cursor 55 places to the left... and i want all the other vi goodies, search of... (3 Replies)
Discussion started by: marqul
3 Replies

4. Shell Programming and Scripting

calling 'n' number of shell scripts based on dependency in one shell script.

Hello gurus, I have three korn shell script 3.1, 3.2, 3.3. I would like to call three shell script in one shell script. i m looking for something like this call 3.1; If 3.1 = "complete" then call 3.2; if 3.2 = ''COMPlete" then call 3.3; else exit The... (1 Reply)
Discussion started by: shashi369
1 Replies

5. Shell Programming and Scripting

simple shell - how to get a parameter typed in a shell script

Hi, I am new to unix and using linux 7.2. I would like to create a script that would make it easyer for me to run my java programms. At the moment I have to type java myJavaprogram I am trying to write a script that will allow me to type something like this "myscript myJavaprogram" or maybe... (4 Replies)
Discussion started by: cmitulescu
4 Replies

6. Shell Programming and Scripting

How to run cmds after changing to a new env (shell) in a shell script

Hi, I am using HP-UNIX. I have a requirement as below I have to change env twice like: cadenv <env> cadenv <env> ccm start -d /dbpath ccm tar -xvf *.tar ccm rcv .... mv *.tar BACKUP but after I do the first cadenv <env> , I am unable to execute any of the later commands . ... (6 Replies)
Discussion started by: charlei
6 Replies

7. Shell Programming and Scripting

Help need to make a shell script run for ffmpeg vhook watermaking in shell

i have a small problem getting a batxh shell script to run in shell this is the code the problem seems to be centered around the ffmpeg command, something maybe to do with the ' ' wrapping around the vhook part command this is a strange problem , if i take the ffmpeg command and... (1 Reply)
Discussion started by: wingchun22
1 Replies

8. Linux

How to Start a Shell as Login shell instead of ordinary shell

Hi I tried with bash --login option. but the output is siva:~$ bash --login siva:~$ is there any way to make the shell ask for user id and password ( and login as different user instead of using sudo / su ) Thx in advance Siva (3 Replies)
Discussion started by: Sivaswami
3 Replies

9. AIX

Difference between writing Unix Shell script and AIX Shell Scripts

Hi, Please give me the detailed Differences between writing Unix Shell script and AIX Shell Scripts. Thanks in advance..... (0 Replies)
Discussion started by: haroonec
0 Replies

10. Shell Programming and Scripting

How to run unix commands in a new shell inside a shell script?

Hi , I am having one situation in which I need to run some simple unix commands after doing "chroot" command in a shell script. Which in turn creates a new shell. So scenario is that - I need to have one shell script which is ran as a part of crontab - in this shell script I need to do a... (2 Replies)
Discussion started by: hkapil
2 Replies
Login or Register to Ask a Question