What's your most useful shell?


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

Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users What's your most useful shell?
# 218  
More than a warning, a strictly conforming portable script must not use it. The reason is POSIX doesn't defines a pathname for the POSIX shell and in particular /bin/sh is not guaranteed to be that one.

A compliant OS is required, when in POSIX mode, to pick the POSIX shell when executing a shebang-less script. The shebang is therefore useless for portable shell scripts as it either has no effect or a negative one when you happen to mistakenly pick a shell you think is POSIX but is not, like /bin/sh on Solaris 10 and older.

The Shell Command Language specs states:

The construct "#!" is reserved for implementations wishing to provide that extension. If it were not reserved, the Shell and Utilities volume of POSIX.1-2008 would disallow it by forcing it to be a comment. As it stands, a strictly conforming application must not use "#!" as the first two characters of the file.
This User Gave Thanks to jlliagre For This Post:
# 219  
korn shell is secure
# 220  
always bash

---------- Post updated at 01:39 PM ---------- Previous update was at 01:39 PM ----------

Quote:
Originally Posted by vinodchauhan123
korn shell is secure
can you justify?
# 221  
@vinodchauhan123 vs @pandeesh

@pandeesh Please take note of the title of the thread and take the time to propose your argument with supporting evidence, rather than question the views of another poster without any supporting evidence.
# 222  
bash, because without it, my OS would seem a mere shell of its actual self.

on the real tho -- i use bash because its the shell i've used since Fresh Prince of Bel Air had new episodes... I've never had a roadblock with bash that ever made me think that another shell was 'better' suited overall- - maybe for a particular instance, but rarely for an entire solution.

Last edited by Berti; 08-08-2012 at 11:27 AM.. Reason: thought of an addition...
# 223  
I've always liked bash for the command history that works with the arrow keys and the directory-name & executable-name autocomplete. My employer recently wanted a login menu script in ksh, and after dabbling with it I like ksh too, for the scripting capabilities it has over the standard sh. Apparently ksh is also strictly backwards-compatible with sh, so much so that (I've read) that AT&T ksh93 is being supplied as the standard /bin/sh in Solaris11. bash is also supposed to be backwards-compatible to sh, right? I suspect that you could spend a whole lot of time learning what bash can do that ksh can't and how, and vice-versa.
# 224  
Quote:
Originally Posted by Clovis_Sangrail
Apparently ksh is also strictly backwards-compatible with sh, so much so that (I've read) that AT&T ksh93 is being supplied as the standard /bin/sh in Solaris11.
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.
Quote:
bash is also supposed to be backwards-compatible to sh, right?
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.
Quote:
I suspect that you could spend a whole lot of time learning what bash can do that ksh can't and how, and vice-versa.
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 ...

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.

ksh also has the ability to handle floating point numbers, which bash and sh don't.

For the most part if you stick to strict sh code, it will work great in all three shells.

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.
This User Gave Thanks to Corona688 For This Post:
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #489
Difficulty: Medium
Because interpreted languages are not compiled, syntax errors do not become runtime errors.
True or False?

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. Shell Programming and Scripting

Cp not working in shell script but running perfectly from shell

Dear All, I have script. Dest="" IFS=' ' for translation in $(echo $MY_MAP) do t1=$(echo $translation | cut -d"=" -f1) t2=$(echo $translation | cut -d"=" -f2| cut -d"," -f1) if then Dest=$UNX/$u_product_path/$u_study_path/$UNXTR/$t2 break; ... (4 Replies)
Discussion started by: yadavricky
4 Replies

3. 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

4. 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

5. 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

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

Featured Tech Videos