在 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
函数定义之后将解决您的问题。