Here is a more complete version for ksh / bash. It behaves like csh / tcsh setenv regardless of the number of arguments.
setenv () { if (( $# == 0 )); then env return 0 fi if [[ $1 == *[!A-Za-z0-9_]* ]]; then printf 'setenv: not a valid identifier -- %s\n' "$1" >&2 return 1 fi case $# in 1) export "$1" ;; 2) export "$1=$2" ;; *) printf 'Usage: setenv [VARIABLE [VALUE]]\n' >&2 return 1 esac }
source share