07-26-2010
Hey Linuxkid,
There are many different types of shell implementations, ranging from ksh, to csh, to bash. Most coding these days, I'm told, is done on bash (you'll get more information if you wiki around).
If you run `sh test.sh', then the shell that runs test.sh is the shell that is invoked when sh is called. To find out which shell `sh' invokes, see what it directs to. Your `sh' command will probably sit in `/bin'. If you do `ls -al /bin/sh' (`ls -al' shows all files in the long listing format - see `man ls' for more), you will find that /bin/sh is probably a symlink (you will probably see an arrow like this `/bin/sh -> dash'). For more on symlinks, do `man ln'. A simple description is that symlinks are like shortcuts in Windows. They point to the *actual* command you invoke when you run sh.
Getting back to `sh', the word that follows the arrow, is the command or shell that is actually invoked when you run sh. Thus, for me, when I do `sh test.sh', what happens is that test.sh is run as a script in the *dash* shell.
Now, if test.sh starts with the line `#!/bin/bash', then that is a direction that it should be run using the *bash* shell only! However, this constraint is obeyed only when you run ./test.sh. That is, even if you have `#!/bin/bash', and you run `sh test.sh', test.sh will run in dash (or whatever your `sh' points) regardless of your `#!..' statement (this is sometimes called a shebang or hashbang. See
Shebang (Unix) - Wikipedia, the free encyclopedia). The shebang is followed only if you do `chmod +x test.sh' and then run `./test.sh'.
I hope this helps?
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
Hi,
I am trying to execute the below shell script: script name(ss1).
ss1 was given permission - 744 before executing.
name: ss1
#ss1
#usage:ss1
ls
who
pwd
:wq
I tried to execute $ss1 (Enter)
Its not executing.... It says that ss1 is not found:
echo $SHELL. The o/put i got is... (5 Replies)
Discussion started by: dreams5617
5 Replies
2. UNIX for Dummies Questions & Answers
I am trying to run a shell script using the ./<ScriptName> command, but the server returns an error bash: ./Script1.sh: Permission denied
What variable do I need to set to avoid this? (4 Replies)
Discussion started by: igandu
4 Replies
3. Shell Programming and Scripting
Hi,
Please help me out.
I have around 700 sql files to execute in a defined order, how can i do it from shell script (3 Replies)
Discussion started by: anushilrai
3 Replies
4. UNIX for Advanced & Expert Users
I need to execute a shell script kept in unix machine from windows. User id, password area available.
For eg.
There's a shell script wich moves all the logs kept in my home directory to a directory named LOGS.
Now i need to get this done through windows; either using a batch file, or java... (4 Replies)
Discussion started by: rajneesh_kapoor
4 Replies
5. Shell Programming and Scripting
hi
Could some one let me know what is the diffrence in executing a shell script as below
$sh script.sh (this is executed in a subshell)
$./script.sh(this is executed in the current shell)
$script.sh(this is executed in a subshell)
where script.sh is the name of the shell script.
... (1 Reply)
Discussion started by: sowjanya
1 Replies
6. Shell Programming and Scripting
Hello,
I created a sql file to create a Procedure, and it was successfully created.
I created a sql file to execute the procedure, and it did without any errors, but i dont see the data been updated.
The Execute procedure.sql script is:
BEGIN
set serveroutput on size 1000000
execute... (5 Replies)
Discussion started by: msrahman
5 Replies
7. Shell Programming and Scripting
Hello everyone. I am new to shell scripting and i am required to create a shell script, the purpose of which i will explain below.
I am on a solaris server btw.
Before delving into the requirements, i will give youse an overview of what is currently in place and its purpose.
... (2 Replies)
Discussion started by: goddevil
2 Replies
8. Shell Programming and Scripting
LD_LIBRARY_PATH=~/tme-0.8/bus/multibus:~/tme-0.8/bus/sbus:~/tme-0.8/dist/softfloat/softfloat/bits32:~/tme-0.8/dist/softfloat/softfloat/bits64:~/tme-0.8/generic:~/tme-0.8/host/bsd:~/tme-0.8/host/gtk:~/tme-0.8/host/posix:~/tme-0.8/ic:~/tme-0.8/ic/ieee754:~/tme-0.8/ic/m68k:~/tme-0.8/ic/sparc:~/tme-0.8/... (1 Reply)
Discussion started by: lucky7456969
1 Replies
9. Shell Programming and Scripting
Platform : Solaris 10, RHEL 5.4, OEL 6
I've noticed that some of my colleagues execute scripts by typing sh before the script name
sh myscript.shI always execute a script by typing the script name and typing enter provided PATH variable has . (current directory) in it
myscript.sh (and... (1 Reply)
Discussion started by: John K
1 Replies
10. Shell Programming and Scripting
Hi All,
I wanted to know why we use the '-f' option while executing script.
in my case...
abcd.sh -f any_evts 02 2014
abcd = Scriptname
-f = dont know
any_evts = Some file or string
02= month
2014 = year
So in above pleas ehelp to understand here -f and other arguement like... (1 Reply)
Discussion started by: ajju
1 Replies
LEARN ABOUT OPENSOLARIS
shells
shells(4) File Formats shells(4)
NAME
shells - shell database
SYNOPSIS
/etc/shells
DESCRIPTION
The shells file contains a list of the shells on the system. Applications use this file to determine whether a shell is valid. See getuser-
shell(3C). For each shell a single line should be present, consisting of the shell's path, relative to root.
A hash mark (#) indicates the beginning of a comment; subsequent characters up to the end of the line are not interpreted by the routines
which search the file. Blank lines are also ignored.
The following default shells are used by utilities: /bin/bash, /bin/csh, /bin/jsh, /bin/ksh, /bin/ksh93, /bin/pfcsh, /bin/pfksh, /bin/pfsh,
/bin/sh, /bin/tcsh, /bin/zsh, /sbin/jsh, /sbin/sh, /usr/bin/bash, /usr/bin/csh, /usr/bin/jsh, /usr/bin/ksh, /usr/bin/ksh93, /usr/bin/pfcsh,
/usr/bin/pfksh, /usr/bin/pfsh, and /usr/bin/sh, /usr/bin/tcsh, /usr/bin/zsh, and /usr/sfw/bin/zsh. /etc/shells overrides the default list.
Invalid shells in /etc/shells could cause unexpected behavior, such as being unable to log in by way of ftp(1).
FILES
/etc/shells list of shells on system
SEE ALSO
vipw(1B), ftpd(1M), sendmail(1M), getusershell(3C), aliases(4)
SunOS 5.11 20 Nov 2007 shells(4)