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.
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.