shell scripts and directories?

der.hans plug-discuss@lists.plug.phoenix.az.us
Mon, 22 Jul 2002 12:35:37 -0700 (MST)


Am 21. Jul, 2002 schwätzte Robert Bushman so:

> I've got a startup script for a deamon I'm using,
> which looks like this:
>
> #!/bin/sh
> ./squeak -headless squeak.image start.st &
>
> Works great. Problem is, squeak, squeak.image,
> and start.st are all files. squeak is an
> executable, so I can link it from /usr/bin.
> squeak.image can be referenced absolutely
> (/usr/local/lang/squeak/squeak.image). But
> when I reference start.st absolutely, it
> doesn't work. I could softlink start.st in
> /etc/rc.d/init.d, but that seems like an
> unprofessional solution.

Yeah, not a good thing.

> So I tried:
>
> #!/bin/sh
> cd /usr/local/lang/squeak/apps/swiki/
> ./swiki.sh

Put a 'pwd' after the cd to verify you changed directories. You should have
changed dirs or gotten an error is you don't have perms to get into that dir
( the dir not existing is definitely lack of perms :).

> and put swiki.sh and start.st in the apps/swiki
> directory, but no dice. It can't find swiki.sh,
> so I'm assuming the cd isn't doing what I think
> it should.

What is swikit.sh? Does it exist? Is it executable?

> So what am I doing wrong? How do I cd within a
> shell script?

Just like you did.

If you just need it for a single commandk, then stick it in a parens.

( cd somewhere; run-command )

That uses a subshell, so avoid doing that in loops that run many, many
times.

$ cat /etc/init.d/swiki
#!/bin/sh

/usr/bin/squeak -headless /usr/local/lang/squeak/squeak.image
/usr/local/lang/squeak/start.st &

That's what it should look like if everything worked. Actually there should
be start and stop stuff :). Does swiki come with an example startup script?

ciao,

der.hans
-- 
#  https://www.LuftHans.com/
#  Stell dir vor, es ist Krieg und keiner geht hin...