I would like to source (i.e. not call) a script from any shell (bash/csh are the primary targets, but fish, zsh, ksh, and rc would also be interesting).
I would like if the script can be a single file - i.e. not a file for each shell dialect.
Can I do that?
I am thinking of something similar to:
if shell is bash then
# bash code here
else
if shell is csh then
# csh code here
else
if shell is xxxsh then
# xxxsh code here
fi
endif
fi
So I can do:
csh% source my_script
bash$ . my_script
The trouble is - of course that if
is not the same in each dialect, so I somehow need to use syntax that is valid for every shell.
Edit
Detecting the shell is the first step of which determine shell in script during runtime is doing a great job of.
An equally important step is how the code for the different sections for shells should be quoted to not confuse other shells. Think: How can you in the section for bash have a <<here_document
containing all characters in all combinations legal in bash but illegal in any other shell without this confusing the other shells. This is not covered by any of the answers/linked answers.