¿Puede un script de shell establecer variables de entorno del shell de llamada?

Estoy tratando de escribir un script de shell que, cuando se ejecuta, establecerá algunas variables de entorno que permanecerán establecidas en el shell de la persona que llama.

setenv FOO foo

en csh / tcsh, o

export FOO=foo

en sh / bash solo lo establece durante la ejecución del script.

eso ya lo se

source myscript

ejecutará los comandos del script en lugar de lanzar un nuevo shell, y eso puede dar como resultado la configuración del entorno del "llamante".

Pero aquí está el problema:

Quiero que este script se pueda llamar desde bash o csh. En otras palabras, quiero que los usuarios de cualquiera de los shell puedan ejecutar mi script y cambiar el entorno de su shell. Entonces 'source' no funcionará para mí, ya que un usuario que ejecuta csh no puede obtener un script bash, y un usuario que ejecuta bash no puede obtener un script csh.

¿Hay alguna solución razonable que no implique tener que escribir y mantener DOS versiones en el script?

Respuestas a la pregunta(21)

Su respuesta a la pregunta