bash -c “workon” return: “comando não encontrado”

2

Usando "workon" no bash result na lista em envs.

bash> workon
project_1

Ao tentar via bash -c, o erro é retornado.

bash> bash -c "workon"
bash: workon: command not found

Editar 1: Mais informações por comentário

bash> type workon

workon is a function
workon () 
{ 
    virtualenvwrapper_load;
    workon "$@"
}
    
por elpddev 06.04.2016 / 12:36

1 resposta

0

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.

    
por 07.04.2016 / 07:54