Error in script "invalid interpreter" (longish)

Richard E Miles r.godzilla at comcast.net
Mon Oct 17 21:45:17 UTC 2005


On Mon, 17 Oct 2005 14:11:55 -0500
Mike McCarty <mike.mccarty at sbcglobal.net> wrote:

> Robin Mordasiewicz wrote:
> > On Mon, 17 Oct 2005, Mike McCarty wrote:
> > 
> >> I'm trying to install lcc (compiler) from source, and encountered
> >> an error which I don't understand. During the install, a script
> >> is executed which fails. I've stripped off non-essential stuff...
> >>
> >> $ env src/run.sh
> >> env: src/run.sh: Permission denied
> >> $ pwd
> >> /mnt/cdrom/lcc/4.2
> >> $ ls -ld .
> >> dr-xr-xr-x  14 root root 4096 Oct 14 15:50 .
> >> $ ls -ld src
> >> dr-xr-xr-x  2 root root 6144 Oct 14 15:50 src
> >> $ ls -ld src/run.sh
> >> -r-xr-xr-x  1 root root 1586 Jul  2  1997 src/run.sh
> >> $ ./src/run.sh
> >> bash: ./src/run.sh: /bin/sh: bad interpreter: Permission denied
> >> $ dumphex src/run.sh
> >>
> >>
> >> 00 23 21 2F 62  69 6E 2F 73  68 0A 23 20  24 49 64 3A |#!/bin/sh.# $Id:|
> >> 10 20 72 75 6E  2E 73 68 2C  76 20 31 2E  31 31 20 31 | run.sh,v 1.11 1|
> >> 20 39 39 37 2F  30 37 2F 30  33 20 30 30  3A 31 35 3A |997/07/03 00:15:|
> >> 30 31 30 20 64  72 68 20 45  78 70 20 24  0A 23 20 72 |10 drh Exp $.# r|
> >> 40 75 6E 20 2E  2E 2E 2F 74  61 72 67 65  74 2F 6F 73 |un .../target/os|
> >> 50 2F 74 73 74  2F 66 6F 6F  2E 73 20 5B  20 72 65 6D |/tst/foo.s [ rem|
> >> 60 6F 74 65 68  6F 73 74 20  5D 0A 0A 23  20 73 65 74 |otehost ]..# set|
> >>
> >>
> >> ...
> >>
> >>
> >> $ ls -ld /bin/sh
> >> lrwxrwxrwx  1 root root 4 Oct 20  2004 /bin/sh -> bash
> >> $ ls -ld /bin/bash
> >> -rwxr-xr-x  1 root root 593304 Mar 11  2004 /bin/bash
> >> $ /bin/sh
> >> sh-2.05b$ exit
> >> exit
> >> $
> >>
> >>
> >> I thought at first that it might be the infamous MSDOS CRs at the
> >> ends of the lines, but the hex dump proves otherwise. The link
> >> /bin/sh exists, and has correct permissons, as does the file
> >> /bin/bash. It even runs.
> >>
> >> Can anyone lend me a clue? I have't got any.
> > 
> > 
> > shot in the dark. Are you running this from your home directory which is 
> > mounted via nfs and has the noexec flag set ?
> 
> I have exactly one machine. I untarred the tarball from the repo, and
> burned the files onto CDROM. The lcc website states that it is
> specifically intended to be used this way. I mounted the CDROM, and
> made it my working directory. The script is on the CDROM.
> 
> However, /bin/sh is on this machine, and it appears that /bin/sh is
> specifically what env is having troubles with. And I can run it
> directly, just not from the script.
> 
> $ pwd
> /mnt/cdrom/lcc/4.2
> 
> $ ls -ld /mnt
> drwxr-xr-x  14 root root 4096 Sep  8 17:05 /mnt
> 
> $ ls -ld /mnt/cdrom
> dr-xr-xr-x  3 root root 2048 Oct  7 10:16 /mnt/cdrom
> 
> $ ls -ld /mnt/cdrom/lcc
> dr-xr-xr-x  4 root root 2048 Oct 14 15:50 /mnt/cdrom/lcc
> 
> $ ls -ld /mnt/cdrom/lcc/4.2
> dr-xr-xr-x  14 root root 4096 Oct 14 15:50 /mnt/cdrom/lcc/4.2
> 
> $ ls -ld /mnt/cdrom/lcc/4.2/src
> dr-xr-xr-x  2 root root 6144 Oct 14 15:50 /mnt/cdrom/lcc/4.2/src
> 
> $ ls -ld /mnt/cdrom/lcc/4.2/src/run.sh
> -r-xr-xr-x  1 root root 1586 Jul  2  1997 /mnt/cdrom/lcc/4.2/src/run.sh
> 
> $ head /mnt/cdrom/lcc/4.2/src/run.sh
> #!/bin/sh
> # $Id: run.sh,v 1.11 1997/07/03 00:15:10 drh Exp $
> # run .../target/os/tst/foo.s [ remotehost ]
> 
> # set -x
> target=`echo $1 | awk -F/ '{ print $(NF-3) }'`
> os=`echo $1 | awk -F/ '{ print $(NF-2) }'`
> dir=$target/$os
> 
> case "$1" in
> 
> $ /mnt/cdrom/lcc/4.2/src/run.sh
> bash: /mnt/cdrom/lcc/4.2/src/run.sh: /bin/sh: bad interpreter: 
> Permission denied
> 
> $ /bin/sh
> sh-2.05b$ ls
> alpha  CPYRIGHT   doc  include  lib  makefile     mips    sparc  tst
> cpp    custom.mk  etc  lburg    LOG  makefile.nt  README  src    x86
> sh-2.05b$ exit
> exit
> 
> Now, the build directory is in my home tree...
> 
> $ set | grep BUILDDIR
> BUILDDIR=/home/jmccarty/build/lcc/4.2/x86-linux
> 
> $ ls -ld /home
> drwxr-xr-x  4 root root 4096 Nov  4  2004 /home
> 
> $ ls -ld /home/jmccarty
> drwxr-x---  54 jmccarty jmccarty 4096 Oct 17 12:10 /home/jmccarty
> 
> $ ls -ld /home/jmccarty/build
> drwxrwxr-x  3 jmccarty jmccarty 4096 Oct 14 15:55 /home/jmccarty/build
> 
> $ ls -ld /home/jmccarty/build/lcc
> drwxrwxr-x  3 jmccarty jmccarty 4096 Oct 14 15:55
> home/jmccarty/build/lcc
> 
> $ ls -ld /home/jmccarty/build/lcc/4.2
> drwxrwxr-x  3 jmccarty jmccarty 4096 Oct 14 16:29 
> /home/jmccarty/build/lcc/4.2
> 
> $ ls -ld /home/jmccarty/build/lcc/4.2/x86-linux
> drwxrwxr-x  5 jmccarty jmccarty 4096 Oct 17 11:50 
> /home/jmccarty/build/lcc/4.2/x86-linux
> 
> $ whoami
> jmccarty
> 
> $ finger jmccarty
> Login: jmccarty                         Name: Mike McCarty
> Directory: /home/jmccarty               Shell: /bin/bash
> On since Fri Oct 14 10:39 (CDT) on :0 (messages off)
> On since Fri Oct 14 16:17 (CDT) on pts/1 from :0.0
> On since Fri Oct 14 16:20 (CDT) on pts/3 from :0.0
>     2 days 21 hours idle
> On since Fri Oct 14 13:23 (CDT) on pts/5 from :0.0
>     3 days idle
> On since Fri Oct 14 15:28 (CDT) on pts/8 from :0.0
>     12 minutes 14 seconds idle
> No mail.
> No Plan.
> 
> 
> Mike

I believe the problem is the permissions of the files in /mnt/cdrom.
When you put in a cdrom disk the permissions of all the files on the
cdrom will be read only. Therefore you can not execute a sh script from
that area. You could copy the script to your home directory and change
it via chmod +x to allow it to run.


-- 
Richard Miles
Federal Way WA. USA
registered linux user 46097




More information about the fedora-list mailing list