If you specify . ./file.ksh, it's like running the contents of that file in your current shell. It's a bit smarter than this, but think of it running: while read line; do "$line"; done <file.ksh
Since it's run in the current shell, any variables it sets, for example, are available in your current shell.
If you run sh file.ksh, you're running "sh" (which may be linked to ksh or bash or whatever) with file.ksh as input. In many cases, "sh" is not the same as "ksh", so different syntax applies. It's run in a child process, though, so variables you set are not available later in your current shell.
If you run ./file.ksh, the first 4 bytes of the file (the file "magic") are read, determined to be a script, and the executable, if available, identified after the shbang is run, feeding the file as input. Also run in a child, so no variables are available after control is passed back to your current login shell.
In basic cases, they may all lead to successful execution of the script - it depends on the script. They're all different ways of executing, though, and follow slightly different rules for syntax - this is a hand-wavy explanation, of course, but I think it covers the gist of what you're asking.
Here's a fun example:
So, my file called "file.cat" contains the above.
My shell (bash) sources the file, and finds only a line beginning with "#", which is a comment, and a blank line. Nothing to do here - no output.
I ran "sh" (although on my system, it is still bash, it follows slightly different behavior when called as "sh") with the file as input, still only finds a comment and blank line - nothing to do here.
This is kind of cool, actually. When invoked, the file is determined to be executable, and a script. Since the interpreter after the shbang is /bin/cat, what is essentially run is /bin/cat ./file.cat
Hi all,
I'm developing a system which requires me to run a ksh script from within a cgi script. What sort of syntax will I need to do this, I'm sure it's simple but can't find out how anywhere!
Thanks. (1 Reply)
In a ksh script on an AIX box running a jillion oracle database processes, I'm setting a variable to one of two possible arguments, depending on cmd line arguments.
FINDIT="ps -ef | grep oracle | grep DBexport | grep rshrc"
-or-
FINDIT="ps -ef | grep oracle | grep prod | grep runback"
I... (3 Replies)
Hi,
I'm new to unix scripting.How can i call a script from another script.
I have a.ksh and b.ksh .I have to call b.ksh from a.ksh after it is successfully exceuted.
I tried using
#!/bin/ksh -x in a.ksh and at the end i have used /path/b.ksh
My problem is it is executing only a.ksh.it... (6 Replies)
Hi,
I am a new bie to unix shell programming. I have specified ksh as the first line in my script but when executed it complains.
*********** Script=test********************
#!/usr/bin/ksh
echo hello
print -p 123
************************************
++++++++ Execution... (7 Replies)
Hi All,
I wrote a script to send a mail if a particular logfile did not get updated since 5 mins. Here is the Script.
log=`date +%e_%b_%Y`.log # returns todays logfile
x=`date -r $log` # returns last modification time of the Log file
h1=`expr substr "$x" 12 2`
m1=`expr substr "$x" 15 2`... (5 Replies)
Hi,
I am in ksh.
below mentioned 3 commands I executed at command prompt & got the expected results.
csh
source csh_infa
<special command>
Now I have to do this in the script in ksh. I entered it as it is.
#!/bin/ksh
csh
source csh_infa
<special command>
Now after... (1 Reply)
I have a question about the following
what is the difference between running myscript vs . myscript vs exec myscript ?
I know that when you just run myscript it will fork a child process and run the script and exits.
What does the . myscript and exec myscript do and why is it different and... (1 Reply)
I am trying to call a ksh script from another ksh script.
in the called script , i am doing sum calculation(used typeset etc)
suppose a.ksh is the calling script and b.ksh is the called script .
. b.ksh (used this inside a.ksh)
this execution gives some error like bad number.
but when i... (1 Reply)
Hello,
I have two "for loops" in my script and the second one is not executing the way i want.
Script:
#!/bin/ksh
IFS=' '
printf "Enter Account name: "
read A B C D E F G H I J K L M N O
for i in ${A} ${B} ${C} ${D} ${E} ${F} ${G} ${H} ${I} ${J} ${K} ${L} ${M} ${N} ${O};... (3 Replies)