--- Johnny Hughes mailing-lists@hughesjr.com wrote:
On Sun, 2005-07-31 at 15:56 +0200, dan1 wrote:
Hi all.
I have a little strange problem. I created a file called 'test.sh' in the root directory containing: #!/bin/sh echo test
When I execute it with '/test.sh' there is no output. When I source it by executing it with '. /test.sh' the output comes ok. When I move it to '/root' and execute it with '/root/test.sh' then it works
perfectly. When I move it to '/home' and execute it with '/home/test.sh' there is no output.
Could someone tell me what I shoud do to make the script run without sourcing it with '.' ? This problem happens only on one CentOS 4 box I have, on the others it
works
perfectly. What am I doing wrong ? The permissions are 755 on the file itself, and I execute them logged as root.
Thanks, Daniel
Dan,
I can't duplicate your issue ... test.sh prints test on my xterm console every time.
It works whether I use echo test or echo "test" ... and works with #!/bin/sh or #!/bin/bash ... on my CentOS-4 i386 machine.
It also worked for both root and a non-root user.
<> --
Johnny Hughes
Does this happen with all the scripts you try to run or just this one?
If it is just with this one, rename it to something like abc.sh and see if it works.
Could be because the shell is getting it confused with the 'test' operator.
Hello all.
Thanks for your try to help me, Johnny, Peter and Bruce.
Yes, this happens with almost all scripts. However I don't think that this is related to the PATH, because I can even access the file directly with it's path like '/test.sh' and the problem is the same. I also renamed the file and this doesn't change anything to the problem neither.
On one script that I have, it went differently:
[root@box scripts]# ./get_ipaddress bash: ./get_ipaddress: bin/sh: bad interpreter: No such file or directory [root@box scripts]# sh ./get_ipaddress 154.37.1.234 [root@box scripts]#
This script is the following:
#!bin/sh CURRENT_IP=`/sbin/ifconfig eth0 | grep inet | cut -d : -f 2 | cut -d \ -f 1` export CURRENT_IP echo $CURRENT_IP
So it's like if it wouldn't find the /bin/sh, because it shows 'bin/sh' instead of '/bin/sh'. Maybe this is the error ? How could I fix it then ? I checked in /etc/passwd and the definition under root is '/bin/bash', but I don't think that the interpreter path is read there for running scripts, does anybody know ? And again, this doesn't happen on two other exactly same boxes I have there (so almost, appart of this little misconfiguration)..
My PATH is the following: [root@anoigo bin]# echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/home/dan/bin:/sbin:/usr/sbin
Thanks, Daniel