bash函数应如何测试它是否在Python virtualenv中运行?

我想到的两种方法是:

[[ "$(type -t deactivate)" != function ]]; INVENV=$?

或者
[[ "x$(which python)" != "x$VIRTUAL_ENV/bin/python" ]]; INVENV=$?

(注意:如果我们在virtualenv内部,则希望$INVENV为1,否则为0,这将强制执行上面的向后测试。)

有没有那么骇人的东西?

最佳答案

if [[ "$VIRTUAL_ENV" != "" ]]
then
  INVENV=1
else
  INVENV=0
fi
// or shorter if you like:
[[ "$VIRTUAL_ENV" == "" ]]; INVENV=$?

编辑:如@ThiefMaster在评论中提到的,在某些情况下(例如,从 Activity 的virtualenv中启动新的shell(可能是tmuxscreen)时),此检查可能会失败(但是,从virtualenv也可能会导致其他问题,我不建议这样做。

08-27 19:55