Calling sh from csh

Polytropon freebsd at edvax.de
Sun Apr 5 20:26:08 UTC 2020


On Sun, 5 Apr 2020 21:48:37 +0200, Jos Chrispijn wrote:
> Can you tell me how I could find out if a shell script runs on csh or sh 
> and then execute it from within the right shell?

If the shell script declares the required shell in the fist
line, for example

	#!/bin/sh

you can simply execute it (given that it has +x execution
permission as required) by

	% ./scriptname

and the correct interpreter will be used.

You can also require bash (in case you're using extended
non-sh functionality) by using

	#!/usr/local/bin/bash

Similarly, executable scripts can call awk, perl or any
other interpreter using the #! mechanism - you simply call
the script by name, the correct interpreter will execute
the script.

In some cases, the filename extension .sh identifies a
shell script as suitable for the sh (or sometimes bash)
shell, so manually calling

	% sh scriptname.sh

or

	% bash scriptname.sh

will always work, no matter if a valid #! line is present.



In case no #! is present and the filename has no extension,
it's required to examine the actual content of the script
in order to run the required interpreter. :-)




-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list