Can anyone enlighten me why the following won't work?
$ groups
staff btgroup
$ ls -l
total 64
-rw-rw---- 1 sld248 btgroup 26840 Apr 02 13:3开发者_JAVA百科9 padaddwip.jks
-rwxrwx--- 1 sld248 btgroup 1324 Apr 02 13:39 padaddwip.ksh
$ ./padaddwip.ksh
ksh: ./padaddwip.ksh: not found.
$ echo $?
127
This is nearly identical to another script which works just fine. I can't see any differences between the two in terms of permissions or ownership.
There may be 2 problems:
Shebang line is wrong (as ghostdog alluded to)
The script was saved from Windows and has DOS line endings.
For the latter, do
head padaddwip.ksh | cat -vet | head -1
The command should produce the shebang line NOT ending with ^M
. If it does end with ^M
that's a DOS-encoded file, and the fix is:
cp padaddwip.ksh padaddwip.ksh.bak
dos2unix padaddwip.ksh.bak > padaddwip.ksh
./padaddwip.ksh
On systems without dos2unix, you can use
cat padaddwip.ksh.bak | tr -d "\r" > padaddwip.ksh
just a guess, check your shebang in padaddwip.ksh
. it should be something like #!/bin/ksh
. If not, use which ksh
to see where your ksh
is installed. Alternatively, you can execute your script by calling the interpreter(ksh) eg
$ /bin/ksh padaddwip.ksh
another way you can do is changing your shebang to #!/usr/bin/env ksh
Also, make sure the user executing the script has its primary group as btgroup
Another way to rid your scripts of the annoying ^M
characters would be to open the file in vi and type :%s/^M//g
(sed within vi) where the ^M
here is created by typing Ctrl-V
then Ctrl-M
. I personally like this method because you don't need to create a backup file and you instantly see the results -just an OCD habit of mine-
Also, I have had some weird problems with using tr
and control characters such as \r
it may have been a shell or site-specific issue, but in such cases I needed to use either the above method or sed from the command line...very to similar what DVK shows above; like sed -e 's/^M//g' padaddwip.ksh.bak > padaddwip.ksh
where you create the ^M
by doing Ctrl-V
then Ctrl-M
(when in vi editor mode).
the shebang is bad.
test the scenario with the shell interpreter on the cmdline.
ksh padaddwip.ksh
精彩评论