workon
é uma função. A definição de função é local para um shell e não é visível nos subshells (o mesmo que as definições de variáveis).
Você precisa exportar a função, se quiser que ela fique visível em subshells. Da página de manual para bash
:
export [-fn] [name[=word]] ...
export -p
The supplied names are marked for automatic export to the environment of subsequently executed commands. If the
-f
option is given, the names refer to functions. If no names are given, or if the-p
option is supplied, a list of names of all exported variables is printed. The-n
option causes the export property to be removed from each name. If a variable name is followed by=word
, the value of the variable is set to word.export
returns an exit status of 0 unless an invalid option is encountered, one of the names is not a valid shell variable name, or -f is supplied with a name that is not a function.
Portanto, export -f workon
após a definição da função resolverá seus problemas.