2

I don't have any experience writing .sh files. I want to run the pvm2raw utility of this app from the Volume Library.

I get the following error when running build.sh in Ubuntu 10.10.

enter image description here

build.sh is as follows:

# make command
set mmfile=V3Makefile
set make="make -f $mmfile"

set rule=$1
if ($rule == "") set rule="all" // line 16

if ($rule == "deps") then
   if ($HOSTTYPE == "iris4d") $make MAKEDEPEND="CC -M" OPTS="-DHAVE_CONFIG_H -DVIEWER_HAVE_DCMTK" TARGET=IRIX depend
   if ($HOSTTYPE == "i386") $make MAKEDEPEND="c++ -M -I/usr/X11R6/include" OPTS="-DHAVE_CONFIG_H -DVIEWER_HAVE_DCMTK" TARGET=LINUX depend

What's wrong there?

Edit: I followed jw013's advice and installed csh. Now I get the following error:

enter image description here

How can I solve this Undefined variable problem?

5
  • 2
    Slightly off-topic, but eww, a csh script? It seems so ... primeval.
    – jw013
    Commented Feb 11, 2012 at 5:08
  • 1
    A csh script named build.sh? Double eww. Commented Feb 11, 2012 at 23:41
  • You must have run it as sh ./build.sh. If you had run it as ./build.sh, you would have gotten a different error message. Commented Feb 11, 2012 at 23:49
  • 1
    i'm curious why you posted screenshots of your terminal rather than simply copying and pasting.
    – ixtmixilix
    Commented Feb 12, 2012 at 0:57
  • 1
    Text is always preferred over images, in regards to stdout/stderr. Text can be indexed. Commented Feb 12, 2012 at 21:35

1 Answer 1

14

The script is declared as

#!/bin/csh -f

The syntax also matches that of csh. You are running it as

sh build.sh

Since csh is compatible with neither Bourne nor POSIX sh, the mismatch causes lots of syntax errors. The correct way to run build.sh is either

csh build.sh

or by making it executable (chmod +x build.sh) and running it directly, letting the system choose the correct interpreter according to the shebang (#!) line:

./build.sh 

(assuming it's in your current directory).

The HOSTTYPE variable is only defined in tcsh, which is one of the csh implementations. If csh is some other csh implementation on your machine, make sure that you install tcsh, and run

tcsh build.sh

or change the first line of the script to #!/bin/tcsh -f.

4
  • Thanks; I installed csh via apt-get, but got this:csh build.sh HOSTTYPE: Undefined variable. Any ideas? Commented Feb 11, 2012 at 6:18
  • 1
    HOSTTYPE is automatically set by most shells. I'm not sure why it is not set for you - maybe you could make a new question for this. Post your shell version and relevant details about your environment.
    – jw013
    Commented Feb 11, 2012 at 6:44
  • 1
    @omgzor There are two implementations of csh: the original C shell by Bill Joy, and the more recent and more featureful tcsh. Only tcsh defines HOSTTYPE (​@jw013: and bash, following tcsh). This script assumes that /bin/csh is the tcsh implementation. Commented Feb 11, 2012 at 23:34
  • The #!/bin/csh -f isn't in the snippet that the OP posted, but it is in the build.sh script for the app. I was going to mention that build.sh is a poor name for a csh script, but that's the fault of the app developer, not of the original poster. Commented Feb 11, 2012 at 23:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .