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(可能是
tmux
或screen
)时),此检查可能会失败(但是,从virtualenv也可能会导致其他问题,我不建议这样做。