05-17-2013
Quote:
Originally Posted by
triplemaya
What difference does the shebang make? My scripts have been running ok without it. Does that mean that the system guessed right which interpreter to use?
The system doesn't guess at all -- it assumes /bin/sh if you don't tell it.
Which works great if your script is a garden-variety bourne shell. For Perl, it's wrong.
Quote:
Is it good practice to always put it in?
Yes, especially if you're using shell features like arrays which may not always be present in the garden-variety /bin/sh... /bin/sh may be a full-featured BASH on
your system, but on others it may be a mouldy old shell with no features but pure Bourne.
So use #!/bin/sh for pure bourne scripts, #!/bin/ksh for ksh scripts, #!/bin/bash for bash scripts, and so forth. Use the exact right shell and people will know which it needs. Better they get a 'no such file' error than your script misbehaves and does unintended things.
Quote:
I am calling functions such as mkdir and rsync - does it make a difference if I put in the shebang or not? (I have read man file but I am not a lot wiser on this point as a result.)
These are not functions, they are external programs. As such they don't care at all which shell you use, any shell has access to them and they all run outside it.
Shell builtins on the other hand can vary between shells. /bin/sh may not have pushd/popd, but bash will.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
I have 2 scripts, one is the .profile and the other is a SID selector for Oracle Databases.
But when I call one from the other, even though it seems to have worked, it doesn't.
Can anyone help??
******************* .profile**********************
#!/bin/ksh
.... (5 Replies)
Discussion started by: dnkansah
5 Replies
2. Cybersecurity
they are having an operator call my home line and also my cell number and they are typing and the operator tells me what they are typing on their computer. i nevere heard of this. it is new to me. it is free the operator said, they knew my name and also a friend of mine's name...the phone says the... (2 Replies)
Discussion started by: gail
2 Replies
3. Shell Programming and Scripting
OK, I'm very new to shell scripting, and I'm trying to write a (very) simple wrapper for sendmail that outputs all the arguments as well as the file that called sendmail to an output file which can later be looked over.
Is it possible to get a file's name and path that called a script? (0 Replies)
Discussion started by: ghstber
0 Replies
4. UNIX for Dummies Questions & Answers
I have created a file generic.func and it has lots of functions. One of the functions is this:
Check_backup_size()
{
dsmc q b $BACKUP_DIR/"*.Z" | awk '{print $1}'|sed 's///g' > outputfile
X=`awk '{sum += $1} END {print sum }' outputfile'`
echo "$X"
ls -ltr $BACKUP_DIR/"*.Z" | awk... (5 Replies)
Discussion started by: ashika
5 Replies
5. Shell Programming and Scripting
Hi all,
The scenario is:
1. I created a script called hello
2. i created another script called blah which meant to use "hello" script.
How do i do it?
e.g. "blah" script
#!/bin/sh
test = /home/blah/hello
echo "please enter name"
read name
test $name
is it correct ? or i... (2 Replies)
Discussion started by: c00kie88
2 Replies
6. UNIX for Dummies Questions & Answers
I have created a shortcut for the file kill_process.sh as shown below.
alias kill_process="sh /root/kill_process.sh"
It is working as per my expectations. But I have 2 questions.
1) Is there any better way?
2) How do I check what does kill_process link to? (1 Reply)
Discussion started by: shantanuo
1 Replies
7. UNIX for Dummies Questions & Answers
Hi. I have a problem in running a program in linux system. This program (damaver.l86) is in the path /home/shenk/damaver/, and it needs to call another program (supcomb.l86) in another path /home/shenk/supcomb/. I tried to modified the .bash_profile, but it didn't work. The error message is always... (1 Reply)
Discussion started by: shenk
1 Replies
8. Programming
I have an adapter written in c++ from which I need to call a java service point.
Could anybody please provide an example program of calling java from c++
thanks in advance. (0 Replies)
Discussion started by: axes
0 Replies
9. Programming
Hello Again,
I am just wanted to know if we can call the Template using "require_once" at PHP?
Any views around happy to discuss.
Thanks in Advance (2 Replies)
Discussion started by: AimyThomas
2 Replies
10. Shell Programming and Scripting
Hi,
I need to run start_load function for two tables.
Step 1: if HMAX_TBL_ID and GMAX_TBLI_D are same for tab_name1 then echo message "all table ids are processed"
Step 2: go back and call start_load for tab_name2 and check if table id are same for table 2 too.
Please let me know how to... (5 Replies)
Discussion started by: sandy162
5 Replies
LEARN ABOUT CENTOS
checkbashisms
CHECKBASHISMS(1) General Commands Manual CHECKBASHISMS(1)
NAME
checkbashisms - check for bashisms in /bin/sh scripts
SYNOPSIS
checkbashisms script ...
checkbashisms --help|--version
DESCRIPTION
checkbashisms, based on one of the checks from the lintian system, performs basic checks on /bin/sh shell scripts for the possible presence
of bashisms. It takes the names of the shell scripts on the command line, and outputs warnings if possible bashisms are detected.
Note that the definition of a bashism in this context roughly equates to "a shell feature that is not required to be supported by POSIX";
this means that some issues flagged may be permitted under optional sections of POSIX, such as XSI or User Portability.
In cases where POSIX and Debian Policy disagree, checkbashisms by default allows extensions permitted by Policy but may also provide
options for stricter checking.
OPTIONS
--help, -h
Show a summary of options.
--newline, -n
Check for "echo -n" usage (non POSIX but required by Debian Policy 10.4.)
--posix, -p
Check for issues which are non POSIX but required to be supported by Debian Policy 10.4 (implies -n).
--force, -f
Force each script to be checked, even if it would normally not be (for instance, it has a bash or non POSIX shell shebang or appears
to be a shell wrapper).
--extra, -x
Highlight lines which, whilst they do not contain bashisms, may be useful in determining whether a particular issue is a false posi-
tive which may be ignored. For example, the use of "$BASH_ENV" may be preceded by checking whether "$BASH" is set.
--version, -v
Show version and copyright information.
EXIT VALUES
The exit value will be 0 if no possible bashisms or other problems were detected. Otherwise it will be the sum of the following error val-
ues:
1 A possible bashism was detected.
2 A file was skipped for some reason, for example, because it was unreadable or not found. The warning message will give details.
SEE ALSO
lintian(1).
AUTHOR
checkbashisms was originally written as a shell script by Yann Dirson <dirson@debian.org> and rewritten in Perl with many more features by
Julian Gilbey <jdg@debian.org>.
DEBIAN
Debian Utilities CHECKBASHISMS(1)