bash -c“workon”返回:“未找到命令”

bash -c“workon”返回:“未找到命令”

在 bash 中使用“workon”会导致环境列表。

bash> workon
project_1

当通过 bash -c 尝试时,返回错误。

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

编辑 1:通过评论获取更多信息

bash> type workon

workon is a function
workon () 
{ 
    virtualenvwrapper_load;
    workon "$@"
}

答案1

workon是一个函数。函数定义对于 shell 来说是本地的,在子 shell 中不可见(与变量定义相同)。

如果希望函数在子 shell 中可见,则需要导出该函数。来自手册页bash

export [-fn] [name[=word]] ...

export -p

提供的名称标记为自动导出后续执行的命令到环境中. 如果-f给出了选项,名称指的是函数。如果没有给出名称,或者-p提供了选项,则打印所有导出变量的名称列表。该-n选项导致从每个名称中删除导出属性。如果变量名称后跟=word,则变量的值设置为 word。 export返回退出状态 0,除非遇到无效选项、其中一个名称不是有效的 shell 变量名称或 -f 提供的名称不是函数。

因此export -f workon函数定义之后将解决您的问题。

相关内容